Как получить максимальные размеры кучи и permgen от JVM? - PullRequest
7 голосов
/ 11 января 2009

Я пытаюсь программно определить максимальный permgen и максимальный размер кучи, с которыми вызывается JVM для моей программы, а не то, что им доступно в данный момент.

Есть ли способ сделать это?

Я знаком с методами в Java Runtime объект, но не ясно, что они действительно предоставляют.

В качестве альтернативы, есть ли способ спросить Eclipse, сколько было выделено для этих двух?

Ответы [ 3 ]

8 голосов
/ 12 января 2009

Попробуйте что-нибудь подобное для 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");
}

Для максимальной кучи вы можете получить это из среды выполнения, хотя вы также можете использовать соответствующий MemoryPoolMXBean.

7 голосов
/ 11 января 2009

Попробуйте это:

MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
mem.getHeapMemoryUsage().getUsed();
mem.getNonHeapMemoryUsage().getUsed();

Но они предлагают только данные снимка, а не кумулятивное значение.

0 голосов
/ 11 января 2009

Что касается затмения, попробуйте поискать инструмент профилирования. Я думаю, что NetBeans имеет один по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...