2008-10-27 5 views

Répondre

30

La réponse de VonC est une solution interactive - si vous voulez savoir programatically, vous pouvez utiliser Runtime.totalMemory() pour connaître le montant total utilisé par la machine virtuelle Java et Runtime.freeMemory() pour savoir à quel point cela est encore disponible (il est attribué à la JVM, mais pas attribué au sein de la JVM - les nouveaux objets peuvent utiliser cette mémoire).

Ce sont des méthodes d'instance - utilisez Runtime.getRuntime() pour obtenir d'abord l'instance singleton.

+0

Vous avez raison (ma première réaction était de surveiller de l'extérieur), +1 à vous;) – VonC

+0

Jon Skeet, bonjour, pouvez-vous s'il vous plaît me dire comment faire la même chose pour C#? en java je soustrais libre du total, non? Et en C# j'ai seulement trouvé PrivateMemorySize64 dans la classe Process, mais je suppose que cela ne donne que de la mémoire totale, non? – Pavel

+0

@ paulpaul1076: Il vaudrait mieux poser une nouvelle question pour ça. –

4

Si vous êtes un java1.6 quelque part et votre programme en cours d'exécution en Java 1.4.2, 1.5 ou 1.6, vous pouvez lancer un visualVM session, connectez-vous à votre application, et suivez la mémoire (et beaucoup plus)

image of monitoring application with Visual VM

(les images ne sont pas affichés au moment, donc s'il vous plaît se réfère à Monitoring an application pour une illustration.)

+0

Merci CMS, et merci à quiconque a voté pour ceci ... considérant que ce n'était pas exactement ce que l'utilisateur demandait;) – VonC

4

Ce ne sera pas exact, mais pour une estimation approximative, il suffit de soustraire Runtime.getRuntime.freeMemory() de Runtime.getRuntime.totalMemory(). Faites cela au début du programme pour avoir une idée de l'utilisation de la mémoire indirecte JVM's et à intervalles plus tard dans l'exécution.

Questions connexes