告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

Description of your first forum.

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子chinausa » 星期五, 2005年10月14日 09:00


==========
将应用程序11M内存占用,降至500K
发表日期:2004-11-27 作者:muse2008[转贴] 出处:CSDN

好多天没有写BLog了,最近解决了一个问题-减少内存占用。不过是有条件的,只能在WinXp,Win2K中应用此方法,不显示主窗体一直运行的程序最佳。以前程序占用11M内存,我用动态创建窗口的方法只能减少不到100K,应用此方法后内存占用只有496K。把下面的过程放到一个Timer中,每隔一段时间执行一次,如5秒。
{
**********
* Clear Memory
* From Muse2008
**********
}
procedure ClearMemory;
begin
 if Win32Platform = VER_PLATFORM_WIN32_NT then
   begin
     SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
     Application.ProcessMessages;
   end;
end;
==========
----------转自delphi程序员助手

用得好,请大家回帖!!
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子lxw5214 » 星期五, 2005年10月14日 09:11


太深奥了,看不明白
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子无泪 » 星期五, 2005年10月14日 09:19


谢谢!可以使用!
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子czcn » 星期五, 2005年10月14日 09:31


什么原理?
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子nickyli » 星期五, 2005年10月14日 09:45


先存下来自己研究了!
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子chenshaizi » 星期五, 2005年10月14日 09:46


有人说系统会不稳定,后遗症是什么?
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子chenshaizi » 星期五, 2005年10月14日 09:46


原理?
SetProcessWorkingSetSize

VB声明
Declare Function SetProcessWorkingSetSize Lib "kernel32" Alias "SetProcessWorkingSetSize" (ByVal hProcess As Long, ByVal dwMinimumWorkingSetSize As Long, ByVal dwMaximumWorkingSetSize As Long) As Long
说明
设置操作系统实际划分给进程使用的内存容量
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hProcess Long,指定一个进程的句柄
lpMinimumWorkingSetSize Long,用于装载进程最小工作环境(容量)的一个变量
lpMaximumWorkingSetSize Long,用于装载进程最大工作环境(容量)的一个变量
适用平台
Windows NT

注解
一个应用程序运行的时候,操作系统的虚拟内存系统会尽可能为其保持事先指定的最小工作环境(也称作“工作区”)大小。除非有空闲的内存可用,否则不会为应用程序分配超出最大工作环境设置以外的内存空间
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子zealothasu » 星期六, 2005年10月15日 03:22


最好先察看一下程序的虚拟内存占用多少再发表

基本上可以说没有什么用处,除了减慢程序的速度外
此函数仅仅是使占用物理内存降低,实际会把这部分内存移到虚拟内存中,结果,当你的程序需要用到的时候,系统又把它调出来,而你5秒钟的定时器又把它放到虚拟内存中
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子kinneng » 星期六, 2005年10月15日 03:50


还会加速硬盘死亡
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子Genl » 星期六, 2005年10月15日 06:05


这种方法 都不如做2个程序
一个监视程序 一个处理程序
监视程序负责监视 一旦符合条件 调用处理程序处理 处理完后继续监视。。。
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子章慧 » 星期六, 2005年10月15日 08:49


诸位均正解啊。等于抽鸦片。毫无好处,只是一时看着漂亮。等于自取灭亡
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子xfeiffer » 星期六, 2005年10月15日 09:18


其实没有必要把你的本来应该那么大内存运行的程序弄到那么狭小的空间里面运行,就好像你本来住的卧室是50平方米,但现在却给你一个2平方米的,刚开始确实是减小了使用空间,但时间长了,你卧室里的东西需要频繁的拿进拿出,反倒不如大的空间直接放在屋子里合适,难道不是吗?
程序也是一样。没见过Windows自己启动之后还把自己硬缩小到几M的空间里运行,有也只是在用户运行很大的程序比如PhotoShop、.Net等等时才会暂时转移到虚拟内存里面,但一旦用户停止了这些大资源户的运行,Windows会自己再重新回到原来的状况继续运行。
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子彤心依旧 » 星期六, 2005年10月15日 09:33


还是使用动态创建和动态链接库的方法可取
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子980 » 星期六, 2005年10月15日 09:44


呵呵 关注一下  具体什么原理呢
 
 
 

告诉大家降低内存占用的方法!将应用程序11M内存占用,降至500K

帖子chbqq » 星期六, 2005年10月15日 19:44


学习