我必须经常检查应用程序的内存使用情况 - 它正确地每60秒使用一次java.lang.Runtime.freeMemory()/ java.lang.Runtime.totalMemory()性能对java.lang.Runtime进行频繁调用totalMemory()/ freeMemory()的含义?
如果我做了上面说每5秒 - 任何性能影响?
(希望不喜欢的System.gc()有)
应用程序在Linux/Solaris中/窗/ HP-UX/AIX等
我必须经常检查应用程序的内存使用情况 - 它正确地每60秒使用一次java.lang.Runtime.freeMemory()/ java.lang.Runtime.totalMemory()性能对java.lang.Runtime进行频繁调用totalMemory()/ freeMemory()的含义?
如果我做了上面说每5秒 - 任何性能影响?
(希望不喜欢的System.gc()有)
应用程序在Linux/Solaris中/窗/ HP-UX/AIX等
测试一下,看看运行。如果你不能构建一个导致性能指标下降的测试,那么我的用户也不会注意到它。
直觉:应该不是问题。现在,不断监视内存的应用程序是否具有良好的设计......这是另一个问题。
我跟踪它在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
寻找的宇宙铅实施
public CollectedHeap heap() {
try {
return (CollectedHeap) heapConstructor.instantiateWrapperFor(collectedHeapField.getValue());
} catch (WrongTypeException e) {
return new CollectedHeap(collectedHeapField.getValue());
}
}
哎呀CollectedHeap是一个接口......因此,我得出的结论是mark-peters'测试并看'会是最好的。
爱得到底,挖。 – Erigami 2013-02-13 20:51:02