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

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

private static long getMemoryUse(){ putOutTheGarbage(); long totalMemory = Runtime.getRuntime().totalMemory(); putOutTheGarbage(); long freeMemory = Runtime.getRuntime().freeMemory(); return (totalMemory - freeMemory); } 

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

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

Runtime是一个类。

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

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

有关更多详细信息,请阅读javadoc 。

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

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