查询java使用的直接内存
try {
Class c = Class.forName("java.nio.Bits");
Field field1 = c.getDeclaredField("maxMemory");
field1.setAccessible(true);
Field field2 = c.getDeclaredField("reservedMemory");
field2.setAccessible(true);
synchronized (c) {
Long max = (Long) field1.get(null);
AtomicLong reserve = (AtomicLong) field2.get(null);
System.out.println(max + " 总量,使用量:" + reserve.get());
}
} catch (Exception e) {
e.printStackTrace();
}
查询Netty使用的直接内存
try {
Class c = Class.forName("io.netty.util.internal.PlatformDependent");
Field field1 = c.getDeclaredField("MAX_DIRECT_MEMORY");
field1.setAccessible(true);
Field field2 = c.getDeclaredField("DIRECT_MEMORY_COUNTER");
field2.setAccessible(true);
synchronized (c) {
Long max = (Long) field1.get(null);
AtomicLong reserve = (AtomicLong) field2.get(null);
System.out.println(max + " 总量,使用量:" + reserve.get());
}
} catch (Exception e) {
e.printStackTrace();
}