web-dev-qa-db-fra.com

Comment calculer l'utilisation de la mémoire d'un programme Java?

Si j'utilise la classe Runtime (freeMemory(), totalMemory() et gc()), cela me donne une mémoire supérieure à Mo (soit 1 000 000 octets) .

Mais si j'exécute le même code sur n'importe quel compilateur en ligne, alors ils affichent la mémoire utilisée en Ko (c'est-à-dire 1000 octets). C'est une grande différence.

Cela signifie que Runtime n'affiche pas la mémoire réelle utilisée par le programme.

J'ai besoin de calculer la mémoire réelle utilisée par le programme. Quelle est la façon dont ces compilateurs en ligne utilisent pour calculer la mémoire utilisée par le programme?

14
Ganesh S

Calculez d'abord la mémoire utilisée avant l'exécution de votre code, c'est-à-dire la première ligne de votre code.

long beforeUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();

Calculez la mémoire utilisée après l'exécution de votre code: -

long afterUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();

Ensuite, vous pouvez faire:

long actualMemUsed=afterUsedMem-beforeUsedMem;

Il vous donnera la mémoire réelle utilisée par votre programme.

Pour une analyse plus approfondie de la mémoire, votre meilleur pari est tout outil de profilage comme jvisualvm .

  • N'oubliez pas, que Runtime.getRuntime (). TotalMemory (), cette mémoire est la mémoire totale disponible pour votre JVM.
  • Java -Xms512m -Xmx1024m, cela signifie que la mémoire totale de votre programme commencera avec 512 Mo, qui peuvent être chargés paresseusement jusqu'à 1024 Mo maximum.
  • Donc, si vous exécutez le même programme, sur différentes machines virtuelles Java, Runtime.getRuntime (). TotalMemory () peut vous donner des résultats différents.
22
Amit Bhati

Vous pouvez utiliser la commande top dans ubuntu pour vérifier l'utilisation du processeur% ou l'utilisation de la mémoire% lors de l'exécution du programme Java.

la commande top vous donnera ces nombreuses informations.

PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+ COMMAND

tapez simplement top et appuyez sur Entrée dans votre terminal et cochez Java dans la section des commandes.

5
Rohit Gupta