Libérer de la ram

Contenu du snippet

C'est un morceau de code pour libérer une quantité voulue de RAM.
Je vous le donne tel quel, il suffit de le coller dans votre Form.

Si vous voulez le voir en action, visitez ce lien:

http://www.vbfrance.com/codes/TEMPERATURE-CHARGE-CPU-LIBERATION-MEMOIRE-POUR-CARTE-ASUS_36665.aspx

C'est une source qui récupère les infos des cartes Asus (mais le reste fonctionne avec les autres cartes) et accessoirement qui libère de la mémoire.

Voilà, j'espère que ça vous sera utile...

Source / Exemple :


Option Explicit

Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)

Private Type MEMORYSTATUS
    dwLength As Long
    dwMemoryLoad As Long
    dwTotalPhys As Long
    dwAvailPhys As Long
    dwTotalPageFile As Long
    dwAvailPageFile As Long
    dwTotalVirtual As Long
    dwAvailVirtual As Long
End Type

Const OCTETVERSMO = &H100000

Private Sub Form_Load()

   Dim lCompteur As Long
   Dim MemStat As MEMORYSTATUS
   Dim sFree() As String
   Dim lMax As Long
   Dim lInit As Long
   Dim lQuantiteVoulue As Long
   Dim lQuantite As Long
   
   'On récupère la valeur de la mémoire initiale
   GlobalMemoryStatus MemStat
   lInit = Int(MemStat.dwAvailPhys / OCTETVERSMO)
   
   'On demande la quantité à libérer
   lQuantiteVoulue = InputBox("Quantité à libérer en Mo:", , 20)
   lQuantite = lQuantiteVoulue
   
   Do
      'lMax est le nombre de fois que l'on va attribué un Mo de mémoire à sFree
      lMax = Int(MemStat.dwAvailPhys / OCTETVERSMO) / 2 + lQuantite + 5
      
      'On bouffe toute la mémoire
      For lCompteur = 0 To lMax
         ReDim Preserve sFree(lCompteur)
         sFree(lCompteur) = String$(OCTETVERSMO, vbNullChar)
      Next
      
      'On rend la mémoire prise
      ReDim sFree(0)
      DoEvents
      
      'On teste si il est encore possible de récupérer de la mémoire sinon on sort de la boucle
      GlobalMemoryStatus MemStat
      If lQuantiteVoulue - Int(MemStat.dwAvailPhys / OCTETVERSMO) + lInit > lQuantite And Int(MemStat.dwAvailPhys / OCTETVERSMO) > lInit Then
         Exit Do
      Else
         lQuantite = lQuantiteVoulue - Int(MemStat.dwAvailPhys / OCTETVERSMO) + lInit
      End If
      
      'On boucle jusqu'à la libération de la mémoire voulue
   Loop Until Int(MemStat.dwAvailPhys / OCTETVERSMO) >= lInit + lQuantiteVoulue
   
   Erase sFree
   MsgBox (Int(MemStat.dwAvailPhys / OCTETVERSMO) - lInit) & " Mo ont été libérés.", vbInformation

End Sub

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.