找回密码
 加入
搜索
查看: 14414|回复: 27

怎么样可以减小占用内存?

 火... [复制链接]
发表于 2009-8-15 17:03:53 | 显示全部楼层 |阅读模式
我做了一个记账类的软件,用到了SQLite,编译后占用内存要19M,比较大

一般要优化一下代码,减少占用内存,有什么好的操作吗?
发表于 2009-8-15 17:11:07 | 显示全部楼层
释放内存的函数
Func _ReduceMemory($i_PID = -1)
        If $i_PID <> -1 Then
                Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
                Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
                DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
        Else
                Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
        EndIf

        Return $ai_Return[0]
EndFunc   ;==>_ReduceMemory
发表于 2009-8-15 17:17:20 | 显示全部楼层
在适当的地方加上 _ReduceMemory(@AutoItPID) 就成了
 楼主| 发表于 2009-8-17 10:02:19 | 显示全部楼层
谢谢了,我在任何一个操作后都添加了这个函数,一下子就小到1-2M了
发表于 2009-8-18 04:20:17 | 显示全部楼层
MARK,,,,,,,,,
发表于 2009-12-29 15:20:31 | 显示全部楼层
好办法!啊
发表于 2010-11-23 20:00:28 | 显示全部楼层
加的太多了,CPU估计又会占用太多了
发表于 2010-11-23 20:21:04 | 显示全部楼层
在适当的地方加上 _ReduceMemory(@AutoItPID) 就成了
afan 发表于 2009-8-15 17:17


请问适当的地方主要是哪些地方?
发表于 2010-11-23 21:01:44 | 显示全部楼层
回复 8# zery


    比如加载界面完成后。或者自行观察自己的程序进行某项操作时的占用内存情况~
发表于 2010-11-23 21:13:19 | 显示全部楼层
或者调用Thread.au3中的_RTEmptyWorkingSet函数来实时清理,这个函数会创建一个新线程,在新线程中实时清理内存,所以不会影响其他操作,只要在脚本最前面调用就行了。

#include <Thread.au3>
_RTEmptyWorkingSet()
发表于 2011-5-11 02:56:36 | 显示全部楼层
#include <Thread.au3>
_RTEmptyWorkingSet()这个函数怎么在帮助里找不到捏?
发表于 2011-5-11 06:38:23 | 显示全部楼层
或者调用Thread.au3中的_RTEmptyWorkingSet函数来实时清理,这个函数会创建一个新线程,在新线程中实时清理 ...
pusofalse 发表于 2010-11-23 21:13


这个和EmptyWorkingSet有区别吗,我在msdn里没找到这个函数,又是未公开的?
发表于 2011-5-11 07:35:04 | 显示全部楼层
学习了,mark一下
发表于 2011-7-6 17:38:19 | 显示全部楼层
P版又公开秘密了,谢谢分享
发表于 2011-8-27 09:49:23 | 显示全部楼层
谢谢,用这个优化了一下我写的收音机,原来12000+K的内存占用现在播放时8000+K,停止播放,只有500+K
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 02:48 , Processed in 0.076760 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表