SetProcessWorkingSetSize减少内存占用

Posted 腾信@迪克猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SetProcessWorkingSetSize减少内存占用相关的知识,希望对你有一定的参考价值。

[DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")]
public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);

/// <summary>
/// 释放内存
/// </summary>
public static void ClearMemory()
{
     GC.Collect();
     GC.WaitForPendingFinalizers();
     if (Environment.OSVersion.Platform == PlatformID.Win32NT)
     {
         SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);
     }
}

如何获取当前应用占用的内存大小:

/// <summary>
/// 释放内存
/// </summary>
public static void ClearMemory()
{
     //获得当前工作进程
     Process proc = Process.GetCurrentProcess();
     long usedMemory = proc.PrivateMemorySize64;
     if (usedMemory > 1024 * 1024 * 20)
     {
         GC.Collect();
         GC.WaitForPendingFinalizers();
         if (Environment.OSVersion.Platform == PlatformID.Win32NT)
         {
             SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);
         }
     }
}

以上是关于SetProcessWorkingSetSize减少内存占用的主要内容,如果未能解决你的问题,请参考以下文章

malloc_trim和SetProcessWorkingSetSize两个神奇的内存相关函数

SetProcessWorkingSetSize() 方法使内存降低了很多(把内存放到交换区,其实会降低性能)——打开后长时间不使用软件,会有很长时间的加载过程,原来是这个!

C#强制清除缓存

.net中清理内存,清理占用内存方式方法

阿里云优惠券 – 阿里云短信优惠券 满1000减50 满3000减150 满5000减250 满10000减500

订单减库存设计