2008-10-27 8 views

Antwort

30

VonC Antwort ist eine interaktive Lösung - wenn Sie programmatisch wissen wollen, können Sie Runtime.totalMemory() verwenden können, die Gesamtmenge von der JVM verwendet, um herauszufinden, und Runtime.freeMemory(), um herauszufinden, wie viel davon noch verfügbar ist (dh es zugeordnet ist zu der JVM, aber nicht innerhalb der JVM zugewiesen - neue Objekte können diesen Speicher verwenden).

Dies sind Instanzmethoden - verwenden Sie Runtime.getRuntime(), um zuerst die Singleton-Instanz zu erhalten.

+0

Sie haben Recht (meine erste Reaktion war von außen zu überwachen), +1 an Sie;) – VonC

+0

Jon Skeet, hallo, kannst du mir bitte sagen, wie du das gleiche für C# machst? in Java würde ich kostenlos von total subtrahieren, oder? Und in C# habe ich nur PrivateMemorySize64 in der Process-Klasse gefunden, aber ich nehme an, dass das nur Gesamtspeicher ergibt, oder? – Pavel

+0

@ paulpaul1076: Es wäre besser, eine neue Frage dafür zu stellen. –

4

Wenn Sie sind ein java1.6 irgendwo und Ihr Programm ist in Java 1.4.2, 1.5 oder 1.6 ausgeführt wird, können Sie eine visualVM session starten, um Ihre Anwendung zu verbinden, und folgen Sie den Speicher (und vieles mehr)

image of monitoring application with Visual VM

(die Abbildungen im Moment nicht angezeigt werden, bezieht sich also bitte an Monitoring an application für eine Illustration.)

+0

Danke CMS, und danke, wer auch immer das Upvoted gemacht hat ... in Anbetracht dessen, dass es nicht genau das war, was der Benutzer anforderte;) – VonC

4

Dies wird nicht genau sein, aber für eine grobe Schätzung, nur Runtime.getRuntime.freeMemory() von Runtime.getRuntime.totalMemory() subtrahieren. Tun Sie das am Anfang des Programms, um eine Vorstellung von der JVM's Overhead-Speicher-Nutzung und in Intervallen letzter in der Ausführung zu bekommen.

Verwandte Themen