2016-01-06 8 views

risposta

4

Hai pensato di utilizzare la funzione totalMemory() dalla classe Runtime - docs? Inoltre ci sono alcuni strumenti gratuiti come VisualVM o JStat, ad esempio:

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

Speranza che aiuta.

+0

Mi interessa misurare l'utilizzo della memoria di picco si è verificato durante l'esecuzione di un particolare pezzo di codice. Sembra che TotalMemory() non restituisca queste informazioni. – Pinch

+0

è estremamente difficile misurare l'utilizzo della memoria di un particolare pezzo di codice. Puoi google, ma l'approccio perfetto non è disponibile (al momento). –

0

Se è necessario la dimensione di picco heap, è possibile combinare la picco dimensione utilizzata di tutti i pool di memoria che sono di tipo MUCCHIO.

Ecco un esempio:

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)); 
Problemi correlati