zoukankan      html  css  js  c++  java
  • 让.NET程序快速释放内存的办法

    公司里的一个程序,经过了N个人的手后发现上了生产内存会一直涨,直到物理内存几乎被占用完毕后突然就下降下来(估计是GC给释放了),然后再一直涨。这个程序主要是对字符串进行处理,困扰了我好几天,本机测试内存也有增长的趋势,但是不大明显,上生产是2、3分钟内存就上G,没找到究竟哪里的问题。
    从网上搜了些资料,看到可以让.NET立即释放内存,本地简单测试了一下,真的管用,但是没敢用,不知道对于多线程的程序,当一个线程显示释放内存时会不会影响到其他线程,而且我是做金融行业程序的,程序万一出问题就是事故,所以请教一下各位高人,这段代码是否会影响程序的稳定性?
    释放内存的代码如下:
    [DllImport("kernel32.dll")]
      public static extern bool SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);

    public static void GarbageCollect()
      {
      GC.Collect();
      GC.WaitForPendingFinalizers();
      GC.Collect();
      }

      public static void FlushMemory()
      {
      GarbageCollect();

      if (Environment.OSVersion.Platform == PlatformID.Win32NT)
      {
      Win32.SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
      }
      }



    NET里面还有一个类可以达到这个效果
      System.Diagnostics.Process.GetCurrentProcess().MinWorkingSet = new System.IntPtr(5);

    采用定时释放+窗体打开的时候,效果很好,估计程序占的内存会在20以下

  • 相关阅读:
    C语言学习之我见-strcpy()字符串复制函数
    豆邮windows客户端(第三方)开发详解
    项目管理的主要控制因素(转)
    daterangepicker -- bootstrap日期时间范围插件使用分享
    Jacob
    Selenium
    基本套接字总结(@function)
    Python字符串处理NoneType的处理
    机器学习相关会议(转载)
    jboss-AS目录结构了解(资料摘取)
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/3913435.html
Copyright © 2011-2022 走看看