JVM 性能優(yōu)化實踐

配置介紹

神舟筆記本 I7-3610QM+8G+240SSD+500G

模仿

使用JAVA開發(fā)的著名軟件有兩個EclipseIdea,我們從此剖析

Idea 2017

JVM參數(shù)如下

image.png
  1. -Server 運行模式
    虛擬機在解釋執(zhí)行相對應的另一方面,虛擬機還有力度更強的編譯器:當虛擬機運行在客戶端模式是使用C1輕量級,服務端是C2重量級。顯而易見,重量級會消耗更多的系統(tǒng)資源但是帶來更強的性能。如果大家像我一樣系統(tǒng)資源足夠且長時間使用編譯軟件推薦是用C2

  2. -Xms -Xmx
    堆初始值128m 最大750m
    計算 最大值為不超過系統(tǒng)1/4

  3. ReservedCodeCacheSize
    保留代碼所用的Cache大小

  4. UseConcMarkSweepGC
    -XX:+UseConcMarkSweepGC:設置年老代為并發(fā)收集。測試中配置這個以后,-XX:NewRatio=4的配置失效了,原因不明。所以,此時年輕代大小最好用-Xmn設置。

  5. XX:SoftRefLRUPolicyMSPerMB
    -XX:SoftRefLRUPolicyMSPerMB=N 這個參數(shù)比較有用的,官方解釋是:Soft reference在虛擬機中比在客戶集中存活的更長一些。其清除頻率可以用命令行參數(shù) -XX:SoftRefLRUPolicyMSPerMB=<N>來控制,這可以指定每兆堆空閑空間的 soft reference 保持存活(一旦它不強可達了)的毫秒數(shù),這意味著每兆堆中的空閑空間中的 soft reference 會(在最后一個強引用被回收之后)存活1秒鐘。注意,這是一個近似的值,因為 soft reference 只會在垃圾回收時才會被清除,而垃圾回收并不總在發(fā)生。系統(tǒng)默認為一秒,我覺得沒必要等1秒,客戶集中不用就立刻清除,改為 -XX:SoftRefLRUPolicyMSPerMB=0;

  6. ea
    -ea[:<package name>"..." | :<class name> ]
    上述參數(shù)就用來設置jvm是否啟動斷言機制(從JDK 1.4開始支持),缺省時jvm關閉斷言機制。
    用-ea 可打開斷言機制,不加<packagename>和classname時運行所有包和類中的斷言,如果希望只運行某些包或類中的斷言,可將包名或類名加到-ea之后。例如要啟動包com.wombat.fruitbat中的斷言,可用命令java -ea:com.wombat.fruitbat...<Main Class>。

  7. useCanonCaches
    使用標準IO緩存

  8. preferIPv4Stack
    優(yōu)先使用IPv4棧

  9. HeapDumpOnOutOfMemoryError
    堆內(nèi)存溢出輸出

  10. OmitStackTraceInFastThrow
    開啟追蹤

Eclipse

1image.png

前面是使用了一些插件可以忽略

Diff

默認使用了G1收集器
Eclipse更使用更多內(nèi)存
在使用G1垃圾回收器的時候,通過 JVM參數(shù) -XX:+UseStringDeduplication 。 我們可以通過刪除重復的字符串,只保留一個char[]來優(yōu)化堆內(nèi)存。這個選擇在Java 8 u 20被引入

推薦文章

JVM

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容