2016-01-06 6 views

Antwort

4

Haben Sie darüber nachgedacht, totalMemory() Funktion von Runtime Klasse - docs zu verwenden? Auch gibt es einige kostenlose Tools, wie VisualVM oder JStat, Beispiel:

jstat -gc <pid> <time> <amount> 

Hoffnung, das hilft.

+0

Ich bin daran interessiert, die maximale Speichernutzung Messung auftreten, wenn ein bestimmtes Stück Code ausgeführt wird. Es scheint, dass totalMemory() diese Informationen nicht zurückgibt. – Pinch

+0

Es ist extrem schwierig, die Speichernutzung eines bestimmten Codeabschnitts zu messen. Sie können es googeln, aber ein perfekter Ansatz ist nicht verfügbar (derzeit). –

0

Wenn Sie die Spitzen Heap-Größe benötigen, können Sie die verwendete Größe Spitze kombinieren aller Speicherpools, die von Typ HEAP. Hier

ein Beispiel:

List<MemoryPoolMXBean> pools = ManagementFactory.getMemoryPoolMXBeans(); 
long total = 0; 
for (MemoryPoolMXBean memoryPoolMXBean : pools) 
{ 
    if (memoryPoolMXBean.getType() == MemoryType.HEAP) 
    { 
    long peakUsed = memoryPoolMXBean.getPeakUsage().getUsed(); 
    System.out.println("Peak used for: " + memoryPoolMXBean.getName() + " is: " + peakUsed); 
    total = total + peakUsed; 
    } 
} 

System.out.println("Total heap peak used: " + Util.format(total));