2011-01-06 14 views
17

Gibt es eine Möglichkeit herauszufinden, wie viel Speicher mein Java-Thread in der VM belegt?Wie viel Speicher benötigt mein Java-Thread?

Zum Beispiel mit Stack-Trace-Dump oder andere Mittel.

Dank

+0

Sie sollten das [VisualVM] (https://visualvm.dev.java.net/) Tool ausprobieren. –

+7

Sun muss zuhören - Sie können die neuen Schnittstellen auf dem plattformspezifischen 'ThreadMXBean' verwenden, um die Thread-Belegung pro Thread zu erhalten: http://download.oracle.com/javase/6/docs/jre/api/management/ extension/com/sonne/management/ThreadMXBean.html # getThreadAllocatedBytes% 28long% 29 – BeeOnRope

+0

@BeeOnRope das ist eine tolle Antwort! Sie sollten es als Antwort posten und ich werde es abstimmen. –

Antwort

22

Java-Threads verwenden den Heap als Shared Memory. Einzelne Threads haben ihren Stack (die Größe, die Sie über die Befehlszeilenoption -Xss festlegen können, der Standardwert ist 512 KB), aber alle anderen Speicher (der Heap) gehören nicht zu bestimmten Threads und fragen, wie viel davon ein bestimmter Thread verwendet macht einfach keinen Sinn.

+0

Aber in meinem System habe ich alle Threads, die ähnlich funktionieren. Um nur ein ungefähres Bild zu bekommen, denke ich daran, die Größe des Heaps zu ermitteln und sie durch die Anzahl der Threads zu teilen, um die ungefähre Größe zu erhalten, die jeder Thread nimmt. Wäre das eine Fahrgeldannahme? –

+0

@Vikas: es macht immer noch keinen Sinn. Was möchtest du diese Nummer * für * benutzen? –

+0

Ich muss ein System erstellen, um die Anzahl der Threads basierend auf einigen externen Faktoren dynamisch zu erhöhen oder zu verringern. Ich wollte die zwei Möglichkeiten analysieren, die ich habe. 1. Keep Starts und Entfernen von Threads im System immer so lange ODER 2. Beginnen Sie mit der MAX-Anzahl von Threads und um zu reduzieren, ich sage ihnen nur, in einem Thread.sleep zu warten. .. dieser zweite Ansatz ist einfacher aus Sicht der Implementierung, aber wollte analysieren, wie viel Stack-Raum ein wartender Thread in das System nimmt, so dass ich die Chancen von nicht genügend Arbeitsspeicher ausgehen. –

Verwandte Themen