[Func] _ReduceMemory
Posté : mar. 17 juil. 2012 10:48
Bonjour à tous, je partage avec vous une information utile trouvée sur le forum anglais, qui permet de libérer la mémoire non utilisée des programmes dont vous connaissez le PID.
Par exemple, l'exemple suivant libère purement et simplement la moitié de la mémoire sur un de mes serveurs en une seule utilisation et est très utile quand vous avez des applis lourdes mal concues qui tournent en tâche de fond.
Cette fonction peut egalement être utilisée en une seule ligne dans votre code, par exemple après la création de votre GUI ou même dans une boucle infinie si vous faites beaucoup d'actions.
Avec AutoIt elle est assez efficace un script de 13Mo passe à 3Mo chez moi.
Par exemple, l'exemple suivant libère purement et simplement la moitié de la mémoire sur un de mes serveurs en une seule utilisation et est très utile quand vous avez des applis lourdes mal concues qui tournent en tâche de fond.
Code : Tout sélectionner
$list = ProcessList()
for $i = 1 to $list[0][0]
_ReduceMemory($list[$i][1])
next
Func _ReduceMemory($PID)
Local $dll = DllOpen("kernel32.dll")
Local $ai_Handle = DllCall($dll, 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $PID)
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
DllCall($dll, 'int', 'CloseHandle', 'int', $ai_Handle[0])
DllClose($dll)
Return $ai_Return[0]
EndFunc
Cette fonction peut egalement être utilisée en une seule ligne dans votre code, par exemple après la création de votre GUI ou même dans une boucle infinie si vous faites beaucoup d'actions.
Code : Tout sélectionner
DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)