25

I'm trying to diagnose a java.lang.OutOfMemoryError: PermGen Space error when running on Sun's Hotspot JVM, and would like to know how much PermGen space my program is using at various points. Is there a way of finding out this information programmatically?

Simon Nickerson
  • 42,159
  • 20
  • 102
  • 127

2 Answers2

38

You can use something like this:

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();
}

This will give you all types of memory. You are interested in "Perm Gen" type.

jleft
  • 3,457
  • 1
  • 23
  • 35
kgiannakakis
  • 103,016
  • 27
  • 158
  • 194
3

Try ManagementFactory.getMemoryPoolMXBeans().

Joachim Sauer
  • 302,674
  • 57
  • 556
  • 614