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?
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 .
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.
PID
USER
PR
NI
VIRT
RES
SHR
S
%CPU
%MEM
TIME+ COMMAND
tapez simplement top
et appuyez sur Entrée dans votre terminal et cochez Java dans la section des commandes.