Java引數-Xms和-Xmx的區別
java記憶體堆疊不夠用時我們會尋求java引數-Xms和-Xmx的幫助,網上也有許多前輩給出了例子,但很多人喜歡把-Xms和-Xmx的值設定成一樣的,甚至我還見過有吧-Xms設的比-Xmx還要大(-Xms是最小值,-Xmx是最大值)。
一開始我也不知道這兩個值設成一樣會有什麼問題,但是我在作專案 時發現,當我把-Xms和-Xmx設定成一樣時,java會不斷地吃記憶體。起先不知道怎麼回事,經過測試後發現,原來java的垃圾回收器在記憶體使用達到-Xms值的時候才會開始回收,如果兩個值一樣,那就意味著,只有當java使用完所有記憶體時才會回收垃圾,這樣一來記憶體當然不停的漲。希望我的教訓對各位有所幫助。
一般設定為
-Xms128m
-Xmx512m
以前只知道最大值於最小值,今天知道最小值於垃圾回收的原理了。受教了。
不同廠家的jdk垃圾回收演算法不一樣,不能一概而論
針對不同應用切換到最合適的GC演算法好了.
如果是1.6的jdk, CMS回收演算法有很大的增強
詳見
不單是垃圾收集,vm會根據空餘記憶體,在xms和xmx之間調整記憶體,所以會耗時
補充,並且同一jdk的gc策略也有多種,不能一概而論
另外,在sun的jdk下,Xms和Xmx設定一樣,可以減輕伸縮堆大小帶來的壓力,但在ibm的jdk下面,設定為一樣會增大堆碎片產生的機率,並且這種負面影響足以抵消前者產生的益處
一開始我也不知道這兩個值設成一樣會有什麼問題,但是我在作專案 時發現,當我把-Xms和-Xmx設定成一樣時,java會不斷地吃記憶體。起先不知道怎麼回事,經過測試後發現,原來java的垃圾回收器在記憶體使用達到-Xms值的時候才會開始回收,如果兩個值一樣,那就意味著,只有當java使用完所有記憶體時才會回收垃圾,這樣一來記憶體當然不停的漲。希望我的教訓對各位有所幫助。
一般設定為
-Xms128m
-Xmx512m
以前只知道最大值於最小值,今天知道最小值於垃圾回收的原理了。受教了。
不同廠家的jdk垃圾回收演算法不一樣,不能一概而論
針對不同應用切換到最合適的GC演算法好了.
如果是1.6的jdk, CMS回收演算法有很大的增強
詳見
不單是垃圾收集,vm會根據空餘記憶體,在xms和xmx之間調整記憶體,所以會耗時
補充,並且同一jdk的gc策略也有多種,不能一概而論
另外,在sun的jdk下,Xms和Xmx設定一樣,可以減輕伸縮堆大小帶來的壓力,但在ibm的jdk下面,設定為一樣會增大堆碎片產生的機率,並且這種負面影響足以抵消前者產生的益處
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/223653/viewspace-1281858/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JAVA -Xms -Xmx -XX:PermSize -XX:MaxPermSize 區別Java
- java jvm 引數 -Xms -Xmx -Xmn -Xss 調優總結JavaJVM
- jvm 調優總結 -Xms -Xmx -Xmn -XssJVM
- subprocess中命令為引數序列和字串的區別字串
- OB有問必答 | 引數和變數的區別是什麼?變數
- Java基礎-成員變數和區域性變數的區別Java變數
- git命令引數單橫槓-和雙橫槓-的區別Git
- 【Java】equals 和 == 的區別Java
- Java和Javascript的區別JavaScript
- java和html的區別JavaHTML
- javascript的雙引號和單引號的用法和區別JavaScript
- 預設引數和關鍵字參數列面上最大的區別是?
- Java對比有引數和無引數Java
- Java™ 教程(有界型別引數)Java型別
- 12C關於CDB、PDB引數的區別和總結
- OOP 術語:Arguments(參量)和 Parameters(引數)的區別(轉載)OOP
- shell中定義變數用雙引號和單引號以及不用引號的區別變數
- Oracle中單引號和雙引號的區別Oracle
- PHP中單引號和雙引號的區別PHP
- java 中equals和==的區別Java
- java yield()和sleep()的區別Java
- ArrayList 和 Vector 的區別 -JAVAJava
- Java中equals和==的區別Java
- java堆和棧的區別Java
- JavaScript和Java的區別(轉)JavaScript
- java中的==和equal的區別Java
- 小米5s和小米note引數配置區別對比
- 紅米Pro和榮耀8引數配置區別對比評測
- rman備份OBSOLETE和EXPIRED引數來歷及區別
- Android中ListView.getCount()與ListView.getChildCount()區別和OnScrollListener()各個引數的區別AndroidView
- Java方法覆蓋和變數覆蓋的區別詳解Java變數
- 將普通的數字轉為color值,java和javascript的區別JavaScript
- 成員變數和區域性變數的區別變數
- Java中Vector和ArrayList的區別Java
- Java之for(;;)和while(true)的區別JavaWhile
- 【Java面試】@Resource 和 @Autowired 的區別Java面試
- Java中 equals() 方法和 == 的區別Java
- 對於java中的"\"和"/" 區別Java