I am trying to find out programatically the max permgen and max heap size with which a the JVM for my program has been invoked, not what is currently available to them.
As for eclipse, try looking for a profiling tool. I think NetBeans has one by default.
Try this ones:
MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
mem.getHeapMemoryUsage().getUsed();
mem.getNonHeapMemoryUsage().getUsed();
But they only offer snapshot data, not a cummulated value.
Try something like this for max perm gen:
public static long getPermGenMax() {
for (MemoryPoolMXBean mx : ManagementFactory.getMemoryPoolMXBeans()) {
if ("Perm Gen".equals(mx.getName())) {
return mx.getUsage().getMax();
}
}
throw new RuntimeException("Perm gen not found");
}
For max heap, you can get this from Runtime, though you can also use the appropriate MemoryPoolMXBean.