关于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()
? 具体来说,如何理解连接Runtime
, getRuntime()
和getRuntime()
的关系?
具体来说,如何理解连接“Runtime”,“getRuntime()”和“totalMemory()”的关系
Runtime
是一个类。
getRuntime()
是Runtime
一个静态方法,它返回一个(实际上是唯一的) Runtime
实例。
totalMemory()
是Runtime
的实例方法,它返回使用的“总内存”。
有关更多详细信息,请阅读javadoc 。
请注意, freeMemory
, maxMemory
和maxMemory
返回的值的定义相当模糊。 此外,前两个在调用方法的瞬间不返回内存使用量。 相反,它们通常返回GC上次运行时计算的值。
(API规范含糊不清的一个原因是避免使这些方法成本太高,和/或对JVM实现的限制太多。如果由于javadoc要求JVM无法使用某些快速GC技术,那将是一件坏事。始终返回内存使用的准确值。)