Korzystam z poniższego kodu, aby zwolnić pamięć w niektórych uruchomionych programach, ponieważ mój własny program potrzebuje dużych zasobów pamięci, aby działać szybciej.Jakie są skutki uboczne używania EmptyWorkingSet?
[DllImport("psapi.dll")]
public static extern bool EmptyWorkingSet(IntPtr hProcess);
public FreeMem(string programName){
EmptyWorkingSet(Process.GetCurrentProcess().Handle);
foreach(Process process in Process.GetProcesses(programName))
{
try
{
EmptyWorkingSet(process.Handle);
}
catch (Exception)
{
...
}
}
}
Wydaje się, że działa dobrze, udało się obniżyć zużycie pamięci niektórych programów, takich jak odkrywcy od 100000 Kb dół do 2000 Kb. To całkiem dobrze, ale czy ma to jakiś niepożądany efekt? Niektóre komercyjne programy używają tego również jako menedżer Yamicsoft Vista/Xp i Firefox Optymalizator, aby wymienić tylko kilka, więc myślę, że to nie ma żadnych złych efektów ubocznych czy jest?
może masz rację. Spróbuję znaleźć sposób na zoptymalizowanie własnego programu zamiast zoptymalizować inne programy i usunąć EmptyWorkingSet, jeśli jest to niebezpieczne. – murasaki5