频繁调用java.lang.Runtime的totalMemory()/freeMemory()对性能的影响?

频繁调用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等平台上运行,请测试并参阅。如果您不能构建一个导致性能指标有意义下降的测试,那么我保证您的用户也不会注意到 直觉:应该不是问题。现在,持续监

我必须经常检查应用程序的内存使用情况——它正确地使用java.lang.Runtime.freeMemory()/java.lang.Runtime.totalMemory()每隔60秒检查一次

如果我每5秒做一次上述操作,会对性能产生影响吗

(希望不是像System.gc()那样)


该应用程序在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是一个接口。。。因此,我得出结论,“测试和查看”是最好的。

我喜欢最后的挖掘。