Des suggestions/conseils/liens/tutoriels seraient appréciés! :)Win32/MFC: Comment trouver de la mémoire libre (RAM) disponible?
Répondre
GlobalMemoryStatus/GlobalMemoryStatusEx
http://msdn.microsoft.com/en-us/library/aa366586(VS.85).aspx
Il n'y a vraiment pas de réponse à cela. Dans des circonstances normales, le système d'exploitation gardera quelque chose dans essentiellement toute la mémoire sur le système. Fondamentalement, une fois qu'il a lu quelque chose dans la mémoire, il gardera une copie de celui-ci en mémoire jusqu'à ce que quelque chose d'autre ait besoin de mémoire pour que le premier soit expulsé. Il y a un certain nombre de fonctions qui peuvent vous fournir des informations sur la mémoire, mais aucune d'entre elles n'essaie de renvoyer une quantité de mémoire complètement inutilisée. Le plus proche que je sache est GlobalMemoryStatusEx
, qui retourne un nombre pour la quantité de mémoire disponible.
Cela signifie que tout ce qui est actuellement dans cette mémoire est actuellement à la fois dans la mémoire et sur le disque, de sorte que la copie en mémoire peut être jetée sans avoir à l'écrire sur le disque d'abord. Par exemple, si vous avez exécuté un programme, la majeure partie du code reste en mémoire (jusqu'à ce que quelque chose d'autre ait besoin de mémoire), au cas où vous décidiez de l'exécuter à nouveau. Puisque c'est juste une copie du programme sur le disque, il peut être jeté, et (si nécessaire) rechargé à partir du disque si nécessaire. Si vous voulez plus de détails, vous pouvez utiliser des choses comme VirtualQueryEx
pour l'obtenir - mais cela va généralement vous surcharger d'informations, vous parler de chaque bloc de mémoire utilisé dans un processus donné, au lieu de donner une belle, nombre simple indiquant "x octets libres".
C'est assez facile de répondre, la RAM libre est toujours suffisamment proche de 0 pour la considérer comme nulle et ne pas déranger. La RAM inutilisée est toujours utilisée par le cache du système de fichiers, vous pouvez le voir dans l'onglet Taskmgr.exe, Performance.
Si vous voulez dire "mémoire virtuelle libre", le chiffre dont vous vous souciez vraiment, alors la réponse est "pas vraiment possible". Vous auriez besoin de HeapWalk(), une fonction très délicate et dangereuse à utiliser. Seul HeapWalk peut détecter les blocs du tas qui sont marqués libres mais qui sont toujours mappés. Le nombre auquel tu arriverais n'a aucun sens de toute façon. Un programme ne manque jamais de blocs de mémoire virtuelle libres, il manque toujours de blocs de mémoire assez grands en premier.
La détection de cette condition est assez facile. Malloc renvoie NULL, le nouvel opérateur lance std :: bad_alloc. Traiter avec la condition n'est pas facile. La résolution prend moins de deux cents dollars, à peu près les frais de licence pour une version 64 bits de Windows.
- 1. Android Disponible Ram
- 2. Trouvez par programme la quantité de RAM disponible
- 3. Trouver le plus grand bloc de mémoire libre
- 4. Android Comment obtenez-vous la mémoire RAM totale dans l'appareil?
- 5. RAM disponible sur le fournisseur d'hébergement partagé
- 6. La mémoire libre n'efface pas le bloc de mémoire
- 7. Comment mesurer de manière fiable la mémoire disponible sous Linux?
- 8. Trouver un port libre
- 9. Comment trouver de la mémoire libre dans une plage d'adresses spécifique
- 10. Comment trouver des rectangles de zone libre?
- 11. comment obtenir l'espace libre disponible sur sdcard de l'application android?
- 12. Problème d'utilisation de mémoire RAM de Northscale?
- 13. Java - Weblogic - JMX: demande de mémoire libre disponible sur tous les serveurs
- 14. Android: Comment obtenez-vous la mémoire totale/disponible interne?
- 15. Mémoire libre après l'animation de l'iphone
- 16. Trouver une zone libre dans la scène
- 17. Comment obtenir la taille de la mémoire système disponible?
- 18. La mémoire est beaucoup plus petite que la mémoire disponible
- 19. Matlab: La mémoire libre est perdue après l'appel d'une fonction
- 20. Trouver la prochaine date disponible
- 21. fois « libre » Trouver dans MySQL
- 22. Comment trouver un port disponible?
- 23. comment obtenir la vitesse de ram?
- 24. comment trouver le pourcentage d'espace libre pour les lecteurs mappés?
- 25. Comment puis-je trouver la mémoire disponible sur une carte SD sur un périphérique wince (C++)
- 26. Que se passera-t-il si une application est assez grande pour être chargée dans la mémoire RAM disponible?
- 27. Mémoire libre d'un tableau d'octets en Java
- 28. La mémoire ne devient pas disponible même après l'avoir libérée
- 29. Configuration de la mémoire du téléphone intelligent
- 30. Pourquoi SQL Server 2008 R2 n'utilise-t-il pas toute la RAM disponible?
Je vous recommande d'affiner la question (ou d'en poser une nouvelle) et de donner plus d'informations générales sur ce que vous essayez de réaliser, dans quel but vous devez connaître la "RAM libre" et quel type d'opérations de mémoire votre programme le fait. Découvrir et interpréter l'état de la mémoire correctement n'est pas facile. Même si vous le savez, vous ne pouvez jamais être sûr que les opérations malloc/new réussissent, en raison de la fragmentation de la mémoire. J'ai eu le temps le plus terrible dans ma carrière en tant que programmeur parce que je croyais: Si j'ai assez de RAM dans mon ordinateur, je n'aurai pas de problèmes avec les opérations de mémoire. Je me trompais tellement. – Slauma