zoukankan      html  css  js  c++  java
  • .net中清理内存,清理占用内存方式方法

    #region 内存回收
           [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(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
                }
            }
            #endregion

     在系统中使用 SetProcessWorkingSetSize方法做了一个测试,调用该方法后,占用内存从80M降到2M.(TaskManager观察的结果)按 照知秋一叶的说法,这样调整WorkingSet,将有可能导致缺页中断,严重影响性能。 但是从使用的情况来看,没有发现这样的现象

    public Form1()
             {
                 InitializeComponent();
                
                //每1分钟 检查一次
                System.Timers.Timer timer = new System.Timers.Timer(60 * 1000);
                timer.Elapsed += timer_Elapsed;
                timer.Start();
             }
     
            private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                //1 比较时间是否有效  HH:mm
                DateTime starttime = e.SignalTime;
                string time = ConfigurationManager.AppSettings["ClearMemory_PerdayTime"];//"05:00"
                string dtNow = starttime.ToString("yyyy-MM-dd HH:mm");
                DateTime dayDefine = DateTime.Parse(starttime.ToString("yyyy-MM-dd") + " " + time);
                if (dayDefine.ToString("yyyy-MM-dd HH:mm") == dtNow)
                {
                    //2 启动垃圾收集器
                    ClearMemory();
                    LogWarning(DateTime.Now.ToLongTimeString() + " :释放内存!");
                }
            }

    注意,引用命名空间:using System.Runtime.InteropServices;

  • 相关阅读:
    if 语句运用
    c#语言基础
    关于条件运算符的应用
    Could not open Hibernate Session for transaction;
    node to traverse cannot be null!
    Struts2文件下载中文名乱码
    Spring MVC框架下的第一个Hello World程序
    strtus2中的defaultactionref无效的解决方法
    c 笔记
    工具系列1
  • 原文地址:https://www.cnblogs.com/x-poior/p/5848562.html
Copyright © 2011-2022 走看看