关于Runtime.getRuntime()的问题.totalMemory()

时间:2011-05-18 02:00:06

标签: java

以下函数用于计算内存使用情况。

private static long getMemoryUse(){
  putOutTheGarbage();
  long totalMemory = Runtime.getRuntime().totalMemory();

   putOutTheGarbage();
   long freeMemory = Runtime.getRuntime().freeMemory();

   return (totalMemory - freeMemory);
 }

我不明白如何理解Runtime.getRuntime().totalMemory()?具体而言,如何理解连接RuntimegetRuntime()totalMemory()的关系?

1 个答案:

答案 0 :(得分:3)

  

具体来说,如何理解连接“Runtime”,“getRuntime()”和“totalMemory()”的关系

Runtime是一个班级。

getRuntime()Runtime的静态方法,它返回Runtime的实际上唯一的实例。

totalMemory()Runtime的实例方法,它返回使用的“总内存”。

有关详细信息,请阅读javadoc

请注意,freeMemorytotalMemorymaxMemory返回的值的定义相当模糊。此外,前两个在调用方法的瞬间不返回内存使用量。相反,它们通常返回GC上次运行时计算的值。

(API规范含糊不清的一个原因是避免使这些方法成本太高,和/或对JVM实施过于严格。如果JVM因为无法使用某些快速GC技术,那将是一件坏事。一个javadoc要求,始终返回内存使用的准确值。)