Посмотрите, сколько прямой буферной памяти доступно для Java? - PullRequest
4 голосов
/ 11 октября 2010

Как можно узнать, сколько прямой памяти в настоящее время выделено (и может быть выделено) Java?Как отмечает оценщик http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4879883, Java поддерживает эти буферы вне обычной кучи Java.

1 Ответ

5 голосов
/ 12 октября 2010

Возможно, есть другие способы сделать это с помощью собственного кода (или профилирования и т. Д.), Но что-то подобное может работать в Java:

Class c = java.nio.Bits.class;
Field maxMemory = c.getDeclaredField("maxMemory");
maxMemory.setAccessible(true);
Field reservedMemory = c.getDeclaredField("reservedMemory");
reservedMemory.setAccessible(true);
synchronized (c) {
    Long maxMemoryValue = (Long)maxMemory.get(null);
    Long reservedMemoryValue = (Long)reservedMemory.get(null);
}
...