以下函数用于计算内存使用情况。
private static long getMemoryUse(){
putOutTheGarbage();
long totalMemory = Runtime.getRuntime().totalMemory();
putOutTheGarbage();
long freeMemory = Runtime.getRuntime().freeMemory();
return (totalMemory - freeMemory);
}
我不明白如何理解Runtime.getRuntime().totalMemory()
?具体而言,如何理解连接Runtime
,getRuntime()
和totalMemory()
的关系?
答案 0 :(得分:3)
具体来说,如何理解连接“Runtime”,“getRuntime()”和“totalMemory()”的关系
Runtime
是一个班级。
getRuntime()
是Runtime
的静态方法,它返回Runtime
的实际上唯一的实例。
totalMemory()
是Runtime
的实例方法,它返回使用的“总内存”。
有关详细信息,请阅读javadoc。
请注意,freeMemory
,totalMemory
和maxMemory
返回的值的定义相当模糊。此外,前两个在调用方法的瞬间不返回内存使用量。相反,它们通常返回GC上次运行时计算的值。
(API规范含糊不清的一个原因是避免使这些方法成本太高,和/或对JVM实施过于严格。如果JVM因为无法使用某些快速GC技术,那将是一件坏事。一个javadoc要求,始终返回内存使用的准确值。)