C#定时清理内存,net网页端可以尝试使用
-- in class definition
——在类定义中
[DllImport("KERNEL32.DLL", EntryPoint = "SetProcessWorkingSetSize", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
internal static extern bool SetProcessWorkingSetSize(IntPtr pProcess, int dwMinimumWorkingSetSize, int dwMaximumWorkingSetSize);
[DllImport("KERNEL32.DLL", EntryPoint = "GetCurrentProcess", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
internal static extern IntPtr GetCurrentProcess();
-- code to call when you want to reduce the memory
--要减少内存时调用的代码
IntPtr pHandle = GetCurrentProcess();
SetProcessWorkingSetSize(pHandle, -1, -1);
使用SetProcessWorkingSetSize函数并不能提高什么性能,也不会真的节省内存,反倒往往会造成一些内存错误,造成应用程序或者系统不稳定,微软自己也建议在建立进程,线程,内核池,就必须小心的使用该函数。
因为他只是暂时的将应用程序占用的内存移至虚拟内存,一旦,应用程序被激活或者有操作请求时,这些内存又会被重新占用。如果你强制使用该方法来 设置程序占用的内存,那么可能在一定程度上反而会降低系统性能,因为系统需要频繁的进行内存和硬盘间的页面交换。
当我们的应用程序刚刚加载完成时,可以使用该操作一次,来将加载过程不需要的代码放到虚拟内存,这样,程序加载完毕后,保持较大的可用内存。
这个东西一般就是整理内存的软件用来骗人的,或者是对于内存占用有强迫症的用户,拿这个安慰他们。
内存占用量的数值有很多种,你看到任务管理器的那个privateworkingset,有些内存占用在这里看不出来,比如开线程占用的栈空间。实际上是要看virtualsize,如果32位程序超过了2GB,64位程序超过8TB,就会溢出。关于系统在资源方面的限制,做sysinternals的MarkRussinovich写过可以参考。.net本身在分配内存的时候也有些限制,比如就算是在64位下,byte[]最大也只能是2GB。也有些溢出的错误并不是真正的溢出,比如GDI+的有些错误也会被误报成溢出。定位内存泄漏有dotMemory/ANTSMemoryProfiler之类的工具可以用。它们就是监视一段时间的内存分配,在完全GC回收后,看还有哪些对象留下来,辅助你分析。
在应用程序中,往往为了释放内存等,使用一些函数,其实,对于内存操作函数要谨慎使用,比如大家常常想到的 SetProcessWorkingSetSize,其实对于windows来说,系统会自动在程序闲置时(如程序被最小化)释放内存的,自己用内存释放 时,往往会造成一些莫名的内存错误,造成自己的应用程序及系统不稳定。
转载于:https://www.cnblogs.com/njccqx/p/9972851.html
C#定时清理内存,net网页端可以尝试使用相关推荐
- Ubuntu如何定时清理内存
Ubuntu如何定时清理内存 1.进入su jiqing@Ubuntu:~$ su 密码: root@Ubuntu:/home/jiqing# 2.创建cleanCache.sh #!/bin/bas ...
- C#中System.Timers.Timer定时器的使用和定时自动清理内存的应用
项目比较大有时候会比较卡,虽然有GC自动清理机制,但是还是有不尽人意的地方.所以尝试在项目启动文件中,手动写了一个定时器,定时清理内存,加快项目运行速度.仅供大家参考吧,代码如下: public cl ...
- 自动清理内存linux,linux 过滤内存使用率并于计划任务结合来自动清理内存缓存...
过滤出内存使用率并进行判断 #!/bin/bash echo "###cleand free_cache script########" #memory usage mem_pus ...
- android开发 清理内存不足,Android现在还需要清理内存吗?不!
对于很多人而言,尤其是那些有强迫症者,这是个然并卵的命题,但是在我们周围,还有很多这样的智能手机用户:怎么这个手机3G内存,空闲的也只有600MB呢?以前那个2G内存的手机都有800MB的空闲,我要一 ...
- android平板内存清理,需要给安卓手机清理内存么?不用!
我知道,对于很多人而言,尤其是那些有强迫症者,这是个然并卵的命题,但是在我们周围,还有很多这样的智能手机用户:怎么这个手机3G内存,空闲的也只有600MB呢?以前那个2G内存的手机都有800MB的空闲 ...
- android机清理存储卡,越用越卡!Android手机需要清理内存吗?
我知道,对于很多人而言,尤其是那些有强迫症者,这是个然并卵的命题,但是在我们周围,还有很多这样的智能手机用户:怎么这个手机3G内存,空闲的也只有600MB呢?以前那个2G内存的手机都有800MB的空闲 ...
- buff/cache内存缓存过大,设置定时清理
buff/cache内存缓存过大,设置定时清理 buff/cache居然占用内存达到10个G的内存 1.编写脚本 vim cleanCache.sh sudo sh -c "echo 1 & ...
- Linux工作笔记036---Centos下查看cpu、磁盘、内存使用情况以及如何清理内存
JAVA技术交流QQ群:170933152 Centos下查看cpu.磁盘.内存使用情况以及如何清理内存 核查服务器基本情况 查看内存使用情况 free -m 查看cpu使用情况 top #查看进程运 ...
- android 图片内存缓存文件在哪个文件夹,别再用手机管家清理内存了!1分钟删掉这些文件夹,内存多出几个G...
原标题:别再用手机管家清理内存了!1分钟删掉这些文件夹,内存多出几个G 你的手机内存还剩多少G?我们在使用手机时,都会产生大量的缓存数据,如果不定期清理,就会积少成多,导致手机内存空间爆满. 你有定期 ...
最新文章
- Oozie 任务调度
- 程序员面试题精选100题(48)-二叉树两结点的最低共同父结点[数据结构]
- oracle锁表语句执行提示无法终止当前对话_Oracle 强制中止正在执行的SQL语句
- stringbuilder寻找字符串位置可能存在多个 java_Java 语言基础amp;String
- ACM大牛总结的线段树专辑
- 把 mysql sql_mode 设置为严格模式的方法
- VBS脚本病毒原理分析与防范
- win7下快捷方式关联错误的修复
- C语言中向量的加法,向量的加减法运算法则
- Windows域/域树/域林的简单区别
- 如何从macOS Catalina向iPhone添加自定义铃声
- 安装redhat 8.0红帽系统
- zabbix的php最低版本,ZABBIX企业监控实践(3):升级与配置PHP
- 天干地支(python)
- 2023年贵州大学文艺学专业考研上岸经验
- Oracle 报错ORA-00904: 标识符无效 ,但是列名和表名没有写错
- 主板开启网络唤醒_网卡(网络)唤醒BIOS设置教程
- UVa679 Dropping Balls (满二叉树+开关灯思想)
- [一步步学数据结构与算法 20]-哈希算法(上)
- 数据分析工程师需要考虑的问题