2011-05-18 64 views
2

以下函數用於計算內存使用情況。有關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()totalMemory()的關係?

+0

順便說一句 - 只是一個WAG,但我認爲'putOutTheGarbage()'方法不會做它做廣告的。 – 2011-05-18 02:27:17

回答

3

具體而言,如何理解連接 「運行」, 「getRuntime()」 的關係和 「totalMemory()」

Runtime是一類。

getRuntime()是一個Runtime的靜態方法,返回Runtime(實際上是唯一的)實例。

totalMemory()Runtime的實例方法,它返回所使用的「總內存」。

欲瞭解更多詳情,請閱讀javadoc

請注意,由freeMemory,totalMemorymaxMemory返回的值的定義比較模糊。此外,前兩個在調用該方法時不會返回內存使用情況。相反,他們通常會返回上次GC運行時計算的值。如果JVM無法使用某些快速GC技術,那麼這將是一件糟糕的事情,因爲如果JVM無法使用某些快速GC技術,那麼這將是一件壞事,因爲這些措辭含糊其辭的API規範是爲了避免使這些方法過於昂貴和/或對JVM實施過於嚴格。的javadoc要求,以隨時返回內存使用的準確值。)