内存控制问题(100分)

  • 主题发起人 主题发起人 messah
  • 开始时间 开始时间
M

messah

Unregistered / Unconfirmed
GUEST, unregistred user!
想请问下,某个软件过于吃内存,能否通过编程的方式控制他的内存使用量啊
 
自己的程序可以,用下面几行代码就行了。<br>(放到 TTimer 里,隔1秒清除一次。目前没发现有不兼容的错误)<br><br>//减少内存占用<br>if Win32Platform = VER_PLATFORM_WIN32_NT then<br>begin<br> &nbsp;SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);<br> &nbsp;application.ProcessMessages;<br>end;
 
木兄提供的代码只是控制自己程序的内存消耗,谁能提供控制别的程序内存消耗的代码啊。
 
使用了上面的方法将导致无法关机。
 
To 木桩兄:我用你的代码内存是控制了,15兆的控制到了4兆。但是有BUG,就是程序搞得一会卡,一会关不了了。请问这怎么解决呀?
 
帮顶! <br><br>http://www.source520.com <br><br>站长开发推广同盟 站长朋友的终极驿站 <br>同时拥有海量源码电子经典书籍下载 <br><br>http://www.source520.com/search/search.asp <br><br>&quot;编程.站长&quot;论坛搜索引擎-----为中国站长注入动力!
 
因为是转的别人的代码,原理我也不太明白<br>SetProcessWorkingSetSize用于 设置操作系统实际划分给进程使用的内存容量<br>-返回值 <br>Long,非零表示成功,零表示失败。 <br><br>-参数 类型及说明 <br>hProcess Long,指定一个进程的句柄 <br>lpMinimumWorkingSetSize Long,用于装载最小进程容量的一个变量 <br>lpMaximumWorkingSetSize Long,用于装载最大进程容量的一个变量 <br><br><br><br>而且仅支持NT(9X不行)。上面那个代码实际只是把物理内存占用清掉,放到虚拟内存吧(猜的...)<br>还没遇见上面两位说的情况,也就没法知道原因了。<br><br>VB(或任意程序)将物理内存的占用挪到虚拟内存里 (那家伙不贴源码,所以不明白)<br>http://blog.csdn.net/zlt982001/archive/2005/08/27/466515.aspx<br>将物理内存的占用挪到虚拟内存里-----揭密篇 &nbsp;(懒得看,不想写长时间驻留程序)<br>http://blog.csdn.net/zlt982001/archive/2005/08/28/466879.aspx<br>希望这个能有帮助。
 
(原话)<br>SetProcessWorkingSetSize() 事实上,使用该函数并不能提高什么性能,也不会真的节省内存。<br><br>因为他只是暂时的将应用程序占用的内存移至虚拟内存,一旦,应用程序被激活或者有操作请求时,这些内存又会被重新占用。如果你强制使用该方法来 设置程序占用的内存,那么可能在一定程度上反而会降低系统性能,因为系统需要频繁的进行内存和硬盘间的页面交换。<br>【所以】<br>1.当我们的应用程序刚刚加载完成时,可以使用该操作一次,来将加载过程不需要的代码放到虚拟内存,这样,程序加载完毕后,保持较大的可用内存。<br>2.程序运行到一定时间后或程序将要被闲置时,可以使用该命令来交换占用的内存到虚拟内存。<br><br>SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF); 或者<br>SetProcessWorkingSetSize(GetCurrentProcess, -1, -1);<br>就是将当前进程使用的内存归0,
 
出错的话,可能是你程序里用到了读写内存的冬冬(不负责任的推断)<br>对于正在使用的内存区块,可以使用 &nbsp;VirtualLock &nbsp;来锁住一定范围的内存不被系统释放。<br><br>相关API<br>VirtualAlloc,VirtualFree
 
希望有人能解释清楚,我也想知道
 
帮顶!<br><br>╭=========================================╮<br><br> &nbsp; 80G海量源代码,控件,书籍全免费狂下不停!<br><br> &nbsp; http://www.source520.com<br> &nbsp; <br>╰=========================================╯
 
后退
顶部