如何查看Java当前分配(并且可能被分配)的direct memory多少?作为http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4879883的评估者,Java将这些缓冲区维护在普通Java堆之外。
答案 0 :(得分:5)
使用本机代码(或分析等)可能还有其他方法可以做到这一点,但像这样的东西可能适用于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);
}