共有评论17条
当前显示最后6条评论
|
wyb_star |
2004/12/6 16:00:19 |
还有一点我要提的,并不是说硬盘狂闪就说明是在使用虚拟内存,这只是其中的一种情况! 实践是检验真理的唯一标准!
我不多说了,到底谁对谁错,谁用谁知道! :) |
wr960204 |
2004/12/6 22:55:03 |
我也不想在这里开辩论会。 大家用了,或看看Windows的内存管理资料心里自有公论。 |
traveller |
2004/12/9 21:01:16 |
不用困惑,wr960204是对的,我对这个函数也比较熟悉,实际上在日常工作中它几乎感觉不到任何副作用。 它主要对运行了很长时间的大型服务器程序会有一些影响,比如Web服务器之类。 大家可以阅读一下MSDN中的说明。 调用这个函数之后能在任务管理器中看到其占用内存逐步减小而不是一次性减小。 我的理解是,这个函数主要影响的是Windows的内存分配策略,所以不是立即见效的。 如果你的程序本来占用10M内存,而你用SetProcessWorkingSetSize把它下限改为500K,上限改为800K,那么效果取决于你机器的空闲内存数。 假设机器的空闲物理内存数为700K,而你的进程是前台进程,那么系统会把这700K物理内存全都供你使用,如果你的进程是后台进程,那么系统会给你保留500K的物理内存。 假设现在机器的空闲物理内存数足够所有进程使用,那么系统会优先为前台进程保留工作集上限的物理内存,然后根据后台进程的MinWorkingSetSize的大小来按比例保留物理内存。 所以,如果一个进程的的MaxWorkingSetSize过大,则当它激活的时候,后台程序将不得不访问磁盘交换文件,系统整体效率降低。如果一个进程的MinWorkingSetSize过大,那么当它处于非激活状态的时候,仍然会占用很多内存,导致前台程序不得不访问磁盘交换文件。而两者过小的话,通常不会影响整个系统的效率,只是自己的在系统内存分配体系中容易被“冷落”。 一些长期驻留系统的程序,定时缩小自己的工作集是比较“礼貌”的行为。 |
sunny3super |
2004/12/23 14:45:11 |
怎么使用呢????? 郁闷. |
sunny3super |
2004/12/23 14:55:15 |
好象我直接在MAIN文件中USES了它,它就生效了,为什么。 |
smartdata |
2005/7/14 11:51:29 |
今天下载使用了一下,内存的减少非常明显,虚拟内存的占用没有什么改变。但一旦程序从后台转为前台时,内存会缓慢上去。由于内存增长速度非常缓慢导致程序几乎会死掉。 我是写的一个读取ERP运行日志的程序,日志记录超过10万条且全部读到客户端。未使用该方法时,内存和虚拟内存方别在130MB和146MB,使用后则分别为500KB和146MB,且500KB还会继续下降 |
我要发表评论 |
查看全部评论 |