Runtime.maxMemory()
和Runtime.totalMemory()
之間的確切區別是什麼? javadoc對此非常模糊(對我來說)。何時使用Runtime.maxMemory()和totalMemory()
這兩種方法的典型用例是什麼,即什麼時候使用相應的另一種方法是不合適的?
Runtime.maxMemory()
和Runtime.totalMemory()
之間的確切區別是什麼? javadoc對此非常模糊(對我來說)。何時使用Runtime.maxMemory()和totalMemory()
這兩種方法的典型用例是什麼,即什麼時候使用相應的另一種方法是不合適的?
totalMemory()
返回當前使用的內存量,而maxMemory()
表示JVM總共可以分配多少內存。
注:從這個如下:totalMemory() <= maxMemory()
,你還可以得到「多少內存左」由maxMemory() - totalMemory()
一個使用情況這是診斷程序所使用的內存,而你將使用totalMemory()
。
注意:兩者都只涉及堆內存,而不是堆棧內存。
總內存是當前分配給JVM的內存。它隨時間而變化。最大內存是JVM可以達到的最大內存。這是總內存的上限。
MaxMemory()是由XMX參數
如何在程序開始運行後獲取Xms參數? –
totalMemory(),其代表JVM的當前堆大小設置的值這是目前由可用於每javadoc的值新objects.As對象和釋放內存佔用使用的內存的組合由totalMemory()返回的值可能會隨着環境的變化而變化。 JVM totalMemory也等於初始JVM的堆大小
最大堆空間是不會JVM生活cycle.Jvm隨時更改過試圖根據沒有新對象的創建,但不擴大totalMemory(大小)超出maxMemory()大小unles我們會得到java.lang.OutOfMemoryError。
「可能隨時間而變化」或多或少的表示「等於初始堆大小」在一般情況下不太可靠。 – Gus
「totalMemory()返回當前使用的內存量」USED ?!你的意思是分配? –