omegabomb 发表于 2009-8-15 17:03:53

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

我做了一个记账类的软件,用到了SQLite,编译后占用内存要19M,比较大

一般要优化一下代码,减少占用内存,有什么好的操作吗?

afan 发表于 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)
                DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle)
      Else
                Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
      EndIf

      Return $ai_Return
EndFunc   ;==>_ReduceMemory

afan 发表于 2009-8-15 17:17:20

在适当的地方加上 _ReduceMemory(@AutoItPID) 就成了

omegabomb 发表于 2009-8-17 10:02:19

谢谢了,我在任何一个操作后都添加了这个函数,一下子就小到1-2M了

zuiyi 发表于 2009-8-18 04:20:17

MARK,,,,,,,,,

316428696 发表于 2009-12-29 15:20:31

好办法!啊

zery 发表于 2010-11-23 20:00:28

加的太多了,CPU估计又会占用太多了

zery 发表于 2010-11-23 20:21:04

在适当的地方加上 _ReduceMemory(@AutoItPID) 就成了
afan 发表于 2009-8-15 17:17 http://www.autoitx.com/images/common/back.gif

请问适当的地方主要是哪些地方?

afan 发表于 2010-11-23 21:01:44

回复 8# zery


    比如加载界面完成后。或者自行观察自己的程序进行某项操作时的占用内存情况~

pusofalse 发表于 2010-11-23 21:13:19

或者调用Thread.au3中的_RTEmptyWorkingSet函数来实时清理,这个函数会创建一个新线程,在新线程中实时清理内存,所以不会影响其他操作,只要在脚本最前面调用就行了。

#include <Thread.au3>
_RTEmptyWorkingSet()

lizhou 发表于 2011-5-11 02:56:36

#include <Thread.au3>
_RTEmptyWorkingSet()这个函数怎么在帮助里找不到捏?

netegg 发表于 2011-5-11 06:38:23

或者调用Thread.au3中的_RTEmptyWorkingSet函数来实时清理,这个函数会创建一个新线程,在新线程中实时清理 ...
pusofalse 发表于 2010-11-23 21:13 http://www.autoitx.com/images/common/back.gif

这个和EmptyWorkingSet有区别吗,我在msdn里没找到这个函数,又是未公开的?

wsfda 发表于 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
页: [1] 2
查看完整版本: 怎么样可以减小占用内存?