频繁调用java.lang.Runtime的totalMemory()/freeMemory()对性能的影响?
我必须经常检查应用程序的内存使用情况——它正确地使用java.lang.Runtime.freeMemory()/java.lang.Runtime.totalMemory()每隔60秒检查一次 如果我每5秒做一次上述操作,会对性能产生影响吗 (希望不是像System.gc()那样)频繁调用java.lang.Runtime的totalMemory()/freeMemory()对性能的影响?,java,performance,Java,Performance,我必须经常检查应用程序的内存使用情况——它正确地使用java.lang.Runtime.freeMemory()/java.lang.Runtime.totalMemory()每隔60秒检查一次 如果我每5秒做一次上述操作,会对性能产生影响吗 (希望不是像System.gc()那样) 该应用程序在Linux/Solaris/Windows/HP-UX/AIX等平台上运行,请测试并参阅。如果您不能构建一个导致性能指标有意义下降的测试,那么我保证您的用户也不会注意到 直觉:应该不是问题。现在,持续监
该应用程序在Linux/Solaris/Windows/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());
}
}
Oops CollectedHeap是一个接口。。。因此,我得出结论,“测试和查看”是最好的。我喜欢最后的挖掘。