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