diff --git a/Qwilight/QwilightComponent.cs b/Qwilight/QwilightComponent.cs index ed56750..470ef16 100644 --- a/Qwilight/QwilightComponent.cs +++ b/Qwilight/QwilightComponent.cs @@ -59,7 +59,7 @@ public static readonly string UtilityEntryPath; public static readonly string AMD64Name = string.Empty; public static readonly string OSName = Environment.OSVersion.ToString(); - public static readonly ulong RAM; + public static readonly long RAM; public static readonly string RAMName = string.Empty; public static readonly string GPUName = string.Empty; public static readonly string M2Name = string.Empty; @@ -169,7 +169,7 @@ try { - RAM = Utility.GetWMI("SELECT TotalPhysicalMemory FROM Win32_ComputerSystem").Select(o => (ulong)o["TotalPhysicalMemory"]).Single(); + RAM = Utility.GetWMI("SELECT TotalPhysicalMemory FROM Win32_ComputerSystem").Select(o => (long)(ulong)o["TotalPhysicalMemory"]).Single(); } catch { diff --git a/Qwilight/System/Configure/Configure.cs b/Qwilight/System/Configure/Configure.cs index a57e9cf..57e05e7 100644 --- a/Qwilight/System/Configure/Configure.cs +++ b/Qwilight/System/Configure/Configure.cs @@ -285,6 +285,8 @@ DefaultAudioVariety _defaultAudioVariety; int _valueGASLevel; bool _wmPointer; + bool _autoLazyGC; + long _lazyGC; public bool WMPointer { @@ -304,7 +306,19 @@ public string WMPointerText => WMPointer ? LanguageSystem.Instance.WMPointerText : LanguageSystem.Instance.NotWMPointerText; - public long LazyGCV2 { get; set; } + public bool AutoLazyGC + { + get => _autoLazyGC; + + set => SetProperty(ref _autoLazyGC, value, nameof(AutoLazyGC)); + } + + public long LazyGCV2 + { + get => _lazyGC; + + set => SetProperty(ref _lazyGC, value, nameof(LazyGCV2)); + } public int GASLevel { @@ -3546,7 +3560,8 @@ } if (isInit || Utility.IsLowerDate(Date, 1, 16, 31)) { - LazyGCV2 = 4096L; + AutoLazyGC = true; + LazyGCV2 = 0L; } if (!UIConfigureValuesV2.ContainsKey(UIItemValue.Title)) { diff --git a/Qwilight/View/ConfigureWindow/DetailedConfigureWindow.xaml b/Qwilight/View/ConfigureWindow/DetailedConfigureWindow.xaml index a1022ab..351358d 100644 --- a/Qwilight/View/ConfigureWindow/DetailedConfigureWindow.xaml +++ b/Qwilight/View/ConfigureWindow/DetailedConfigureWindow.xaml @@ -47,7 +47,10 @@ - + + + + diff --git a/Qwilight/ViewModel/MainViewModel.cs b/Qwilight/ViewModel/MainViewModel.cs index 9089771..72b4c59 100644 --- a/Qwilight/ViewModel/MainViewModel.cs +++ b/Qwilight/ViewModel/MainViewModel.cs @@ -252,7 +252,12 @@ IsPragmatic = !IsWPFViewVisible && IsComputingMode && !Computer.IsPausingWindowOpened; if (IsPragmatic) { - var lazyGC = Configure.Instance.LazyGCV2 * 1000L * 1000L; + if (Configure.Instance.AutoLazyGC) + { + Configure.Instance.LazyGCV2 = Math.Max(0L, (Utility.GetWMI("SELECT FreePhysicalMemory FROM Win32_OperatingSystem").Select(o => 1000 * (long)(ulong)o["FreePhysicalMemory"]).Single() - QwilightComponent.RAM / 10) / 2 / 1000 / 1000); + } + + var lazyGC = Configure.Instance.LazyGCV2 * 1000 * 1000; if (lazyGC > 0L) { try