Sto tentando di diagnosticare un errore java.lang.OutOfMemoryError: PermGen Space
durante l'esecuzione su JVM Hotspot di Sun e vorrei sapere quanto spazio PermGen viene utilizzato dal mio programma in vari punti. C'è un modo per scoprire queste informazioni a livello di programmazione?Come faccio a trovare a livello di programmazione il mio utilizzo dello spazio PermGen?
25
A
risposta
38
Si può usare qualcosa di simile:
Iterator<MemoryPoolMXBean> iter = ManagementFactory.getMemoryPoolMXBeans().iterator();
while (iter.hasNext())
{
MemoryPoolMXBean item = iter.next();
String name = item.getName();
MemoryType type = item.getType();
MemoryUsage usage = item.getUsage();
MemoryUsage peak = item.getPeakUsage();
MemoryUsage collections = item.getCollectionUsage();
}
Questo vi darà tutti i tipi di memoria. Sei interessato al tipo "Perm Gen".
3
Grazie, questo funziona. Sto prendendo il MemoryPoolMXBean dove name.equalsIgnoreCase ("Perm Gen"). –
Informazioni necessarie, grazie kgiannakakis. – vissu