查看Java可用的直接缓冲区内存量?

时间:2010-10-11 17:26:08

标签: java nio

如何查看Java当前分配(并且可能被分配)的direct memory多少?作为http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4879883的评估者,Java将这些缓冲区维护在普通Java堆之外。

1 个答案:

答案 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);
}