Libérer de la ram

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 560 fois - Téléchargée 27 fois

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

Ajouter un commentaire

Commentaires

Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010

Certes. Cela me fait penser au soft "RamBoostXP" (ou un truc dans le genre), il est vraiment inutile. Remplit, la RAM, fait passer tout le contenu ancien de la RAM dans le SWAP, et paf, PC hyper lent parce qu'il doit recharger à l'ouverture de chaque programme le contenu du SWAP dans la RAM.

Cela dit, le code présenté ici remplit sa tache, même si le résultat n'est pas forcément souhaitable. Donc en ce sens, çà marche.

Mais autre chose : le type Long est un faible (limité à +-2^31) ==> calculs erronés pour plus de 2Go de RAM.

De même que le type String, qui est limité à 2^31 caractères.

@+
Messages postés
414
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
26 juillet 2007
2
c'est pour ca que j'ai dit dans mon 1er post: "sur le code y'as rien a redire" << je voulai dire par la que le code repond a ce que il doit etre prevu et que c'est quand meme bon de l'apprendre.
Messages postés
115
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
16 avril 2006

Lucyberad, ce code n'a peut etre pas d'interet pour toi, mais il permet d'aborder certaines notions de développement, il est donc interessant pour qui veux apprendre,c'est mon avis !!
car sur tout le site,avec tout les language, je pense qu'il n'y a pas beaucoup de sources utiles au premier sens du terme, mais elles sont souvent ludiques!
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

;) merci quand j'ai relu j'ai eu l'impression que jme la racontait un peu lol, mais j'ai appris ça sur l'autre source dont je parlait, donc je fais juste circuler l'info
Messages postés
414
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
26 juillet 2007
2
MadM@tt > "Voilà j'espère que ça aura pu vous apporter des infos"
ni trop court, ni trop long, c'est brillamment resumé.
Afficher les 14 commentaires

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.