我必须经常检查应用程序的内存使用情况 - 使用java.lang.Runtime.freeMemory()/ java.lang.Runtime.totalMemory()
每60秒做一次。如果我按照上述说法每隔5秒钟做一次会有什么影响呢?
(希望不像System.gc()那样)
该应用程序在Linux / Solaris / Windows / HP-UX / AIX等上运行
答案 0 :(得分:2)
测试并查看。如果您无法构建导致性能指标显着下降的测试,那么我保证您的用户也不会注意到它。
直觉:不应该是一个问题。现在,一个持续监控其内存的应用程序是否具有良好的设计......这是另一个问题。答案 1 :(得分:1)
我在openjdk jvm.cpp
中追踪了它JVM_ENTRY_NO_ENV(jlong, JVM_TotalMemory(void))
JVMWrapper("JVM_TotalMemory");
size_t n = Universe::heap()->capacity();
return convert_size_t_to_jlong(n);
JVM_END
搜索Universe的实现导致
public CollectedHeap heap() {
try {
return (CollectedHeap) heapConstructor.instantiateWrapperFor(collectedHeapField.getValue());
} catch (WrongTypeException e) {
return new CollectedHeap(collectedHeapField.getValue());
}
}
Oops CollectedHeap是一个界面...因此我得出结论mark-peters'测试并看到'最好。