C#释放内存的方法

原文:https://blog.csdn.net/zsy619/article/details/79181719

---------------------

如何释放内存:

[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);
         }
     }
}

原文地址:https://www.cnblogs.com/dabexiong/p/9907648.html

时间: 2024-10-16 13:49:10

C#释放内存的方法的相关文章

MFC使用Create创建创建窗体后释放内存的方法

当在一个窗口中生成另外一个窗口 时: CTestDlg *pTd ; 头文件定义 CRect rc; GetWindowRect(&rc); CRect rc1; pTd= new CTestDlg ; pTd->Create(IDD_123, this);//窗口的ID pTd->GetWindowRect(&rc1); pTd->MoveWindow(rc.left+190, rc.top+18, rc1.Width(), rc1.Height()); pTd->

vector释放内存之swap方法

相信大家看到swap这个词都一定不会感到陌生,就是简单的元素交换.但swap在C++ STL中散发着无穷的魅力.下面将详细的说明泛型算法swap和容器中的swap成员函数的使用! 1. 泛型算法swap swap的函数原型: template <class T> void swap ( T& a, T& b ) { T c(a); a=b; b=c; } vect中swap成员函数实现源码: void swap(vector<_Tp, _Alloc>& __

Linux 释放缓存区内存的方法

释放缓存区内存的方法 buffer : 从内存中准备要写入磁盘的数据cache: 从磁盘中写入内存的数据,并被相应的服务快速的读取. 1)清理pagecache(页面缓存)echo 1 > /proc/sys/vm/drop_caches 或者sysctl -w vm.drop_caches=1 2)清理dentries(目录缓存)和inodesecho 2 > /proc/sys/vm/drop_caches或者sysctl -w vm.drop_caches=2 3)清理pagecache

CentOS7清理yum缓存和释放内存方法

清理yum缓存 清理yum缓存使用yum clean 命令,yum clean 的参数有headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all yum clean headers #清理/var/cache/yum的headers yum clean packages #清理/var/cache/yum下的软件包 yum clean metadata ... Linux释放内存 释放网页缓存(To free

windows server 2008 大量拷贝后释放内存

管理的服务器中有一台windows 2008,这台服务器最近每天都会拷贝几十万的图片,拷贝量非常大,维护时发现每次拷贝完,操作系统的内存使用都会接近100%,导致没有办法进行其它操作,前几次都通过下班后重启服务器解决,今天仔细查了一下,找到了问题的原因 问题描述: server 2008 r2系统会在进行大量IO操作时,占据大量内存资源,直至内存占满,从而导致系统运行速度变慢. 相关现象:1. 内存占用率90%以上(即是是64G内存,也会占用63.5G)2. 资源管理器中所有进程内存和较低(约1

C++基础:二维数组动态的申请内存和释放内存

使用二维数组的时候,有时候事先并不知道数组的大小,因此就需要动态的申请内存.常见的申请内存的方法有两种:malloc/free 和 new/delete. 一.malloc/free (1)申请一维数组 void dynamicCreate1Array() { int m; int i; int *p; cout<<("please input the length of data:"); cin >> m; p = (int*)malloc(sizeof(in

New动态分配 Delete 释放内存

在C++中,对于变量和对象都是编译器在编译时分配好的,对于数组初始化时,无法确定多少内存,很容意造成大开小用的情况. new  动态分配 一般格式:1. 指针变量名 =new  类型标识符; 2.指针变量名  =new  类型标识符(初始值); 3.指针变量名  =new  类型标识符 [内存单元个数];   开辟数组的定义方法 new运算符返回的是一个指向所分配类型变量的指针. delete 释放内存 一般格式:1.delete p; 2.delete []p; 删除变量p的地址空间,释放in

C# WinForm应用程序降低系统内存占用方法总结

这篇文章主要介绍了C# WinForm应用程序降低系统内存占用方法总结,本文总结了9个方法,同时给出了一个定期清理执行垃圾回收代码,需要的朋友可以参考下 背景: 微软的 .NET FRAMEWORK 现在可谓如火如荼了.但是,.NET 一直所为人诟病的就是“胃口太大”,狂吃内存,虽然微软声称 GC 的功能和智能化都很高,但是内存的回收问题,一直存在困扰,尤其是 winform 程序,其主要原因是因为.NET程序在启动时,是需要由JIT动态编译并加载的,这个加载会把所有需要的资源都加载进来,很多资

内存分配方法 kmalloc()、vmalloc()、__get_free_pages()

Copyright: 该文章版权由潘云登所有.可在非商业目的下任意传播和复制. 对于商业目的下对本文的任何行为需经作者同意. kmalloc #include <linux/slab.h> void *kmalloc(size_t size, int flags); void kfree(const void *ptr); 使用kmalloc可以获得以字节为单位的一块内核内存,它不对所获取的内存空间清零.这个函数返回一个指向内存块的指针,其内存块至少要有size大小.所分配的内存区在物理上是连