1. 程式人生 > >北冥有魚 其名為鯤 化而為鳥 其名為鵬

北冥有魚 其名為鯤 化而為鳥 其名為鵬

一、JVM記憶體分配設定

1. JVM記憶體分配設定的引數有四個:

-Xmx Java Heap最大值,預設值為實體記憶體的1/4,最佳設值應該視實體記憶體大小及計算機內其他記憶體開銷而定;

-Xms Java Heap初始值,Server端JVM最好將-Xms和-Xmx設為相同值,開發測試機JVM可以保留預設值;

-Xmn Java Heap Young區大小,不熟悉最好保留預設值;

-Xss 每個執行緒的Stack大小,不熟悉最好保留預設值;

2. 如何設定JVM的記憶體分配:

(1)當在命令提示符下啟動並使用JVM時(只對當前執行的類Test生效):

java -Xmx128m -Xms64m -Xmn32m -Xss16m Test



二、檢視JVM記憶體資訊

Runtime.getRuntime().maxMemory(); //最大可用記憶體,對應-Xmx

Runtime.getRuntime().freeMemory(); //當前JVM空閒記憶體

Runtime.getRuntime().totalMemory(); //當前JVM佔用的記憶體總數,其值相當於當前JVM已使用的記憶體及freeMemory()的總和

關於maxMemory(),freeMemory()和totalMemory():

maxMemory()為JVM的最大可用記憶體,可通過-Xmx設定,預設值為實體記憶體的1/4,設值不能高於計算機實體記憶體;

totalMemory()為當前JVM佔用的記憶體總數,其值相當於當前JVM已使用的記憶體及freeMemory()的總和,會隨著JVM使用記憶體的增加而增加;

freeMemory()為當前JVM空閒記憶體,因為JVM只有在需要記憶體時才佔用實體記憶體使用,所以freeMemory()的值一般情況下都很小,而JVM實際可用記憶體並不等於freeMemory(),而應該等於maxMemory()-totalMemory()+freeMemory()。JVM)及其記憶體分配的設定