bien content du résultat car ça marche au poil

donc le principe utilisée est le suivant pour optimiser la RAM :
On rempli la mémoire avec des anneries pour forcer window à écrire ce qui sert pas sur le dur. (c'est le principe qu'utilise Tweak-XP)
chez moi, les résultats sont plutot pas mal, avec XP, il me reste plus que 90Mo en ram environ

bon après, on recharge ce dont on se sert, ça remonte à environ 110 - 140 mo, mais j'ai gagné quelque 100mo car on bout d'une journée à bidouiller sur purebasic, photoshop, etc ..., je suis facilement à 220 - 260 Mo
dite moi ce que ça donne chez vous, merci

ça donne le code suivant :
Code : Tout sélectionner
Enumeration
#Memoire
#Libre
#Occupee
#Optimiser
#Etat
EndEnumeration
#TailleX = 200
#TailleY = 92
Procedure Optimisation(Total.l)
#TailleMem = 16 * 1024 * 1024 ; 16 Mb
NewList Memoire.l()
; On crée un échantillon destinée à remplir la mémoire
MemOrigine = AllocateMemory(#TailleMem)
For n = 0 To Total / 16 ; On rempli la mémoire avec des connerires
AddElement(Memoire())
Memoire() = AllocateMemory(#TailleMem)
CopyMemory(MemOrigine, Memoire(), #TailleMem) ; On utilise la mémoire sinon, ça ne marche pas
Next
; On supprime les blocs mémoire
ResetList(Memoire())
While NextElement(Memoire())
FreeMemory(Memoire())
Wend
FreeMemory(MemOrigine)
ClearList(Memoire())
SetGadgetText(#Etat, "")
DisableGadget(#Optimiser, 0)
EndProcedure
If OpenWindow(0, 0, 0, #TailleX, #TailleY, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Optimiser la RAM") = 0 Or CreateGadgetList(WindowID()) = 0
End
EndIf
; Structure MEMORYSTATUS
; dwLength.l ; SizeOf(MEMORYSTATUS)
; dwMemoryLoad.l ; Pourcentage de mémoire utilisée
; dwTotalPhys.l ; Taille de la mémoire en octects
; dwAvailPhys.l ; Quantité de mémoire libre en octects
; dwTotalPageFile.l
; dwAvailPageFile.l
; dwTotalVirtual.l
; dwAvailVirtual.l
; EndStructure
MemoireInfo.MEMORYSTATUS
MemoireInfo\dwLength = SizeOf(MEMORYSTATUS)
TextGadget(#PB_Any, 3, 3, 100, 15, "Mémoire libre : ")
TextGadget(#PB_Any, 3, 18, 100, 15, "Mémoire occupée : ")
TextGadget(#Libre, 103, 3, #TailleX - 6, 15, "")
TextGadget(#Occupee, 103, 18, #TailleX - 6, 15, "")
ProgressBarGadget(#Memoire, 1, 33, #TailleX - 2, 20, 0, 100, #PB_ProgressBar_Smooth)
ButtonGadget(#Optimiser, 1, 54, #TailleX - 2, 22, "Optimiser la RAM")
TextGadget(#Etat, 3, #TailleY - 15, #TailleX - 6, 15, "")
Timer = SetTimer_(WindowID(), 0, 250, 0)
Quitter = 0
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
Select EventGadgetID() ; boutons, zone de texte, ...
Case #Optimiser
If Total > 0
SetGadgetText(#Etat, "Opération en cours")
DisableGadget(#Optimiser, 1)
CreateThread(@Optimisation(), Total)
EndIf
EndSelect
ElseIf Event = #WM_TIMER ; On rafraichie l'affichage
GlobalMemoryStatus_(@MemoireInfo) ; On récupère les information sur la RAM
Pourcentage = MemoireInfo\dwMemoryLoad ; Pourcentage de RAM utilisée
Libre = MemoireInfo\dwAvailPhys / 1024 / 1024 ; Espace libre en Mo
Total = MemoireInfo\dwTotalPhys / 1024 / 1024
Occupee = Total - Libre ; Espace occupée en Mo
; On affiche les valeurs
SetGadgetState(#Memoire, Pourcentage)
SetGadgetText(#Libre, Str(Libre) + " Mb")
SetGadgetText(#Occupee, Str(Occupee) + " Mb (" + Str(Pourcentage) + "%)")
ElseIf Event = #PB_EventCloseWindow
If GetGadgetText(#Etat) = ""
Quitter = 1
EndIf
EndIf
Until Quitter
KillTimer_(WindowID(), Timer)
End
http://perso.wanadoo.fr/lesoldatinconnu ... ysteme.zip