Java虚拟机5:常用JVM命令参数
這里匯總一些平時(shí)用到的、看到的一些虛擬機(jī)參數(shù):
(1)-Xms20M
表示設(shè)置堆容量的最小值為20M,必須以M為單位
(2)-Xmx20M
表示設(shè)置堆容量的最大值為20M,必須以M為單位。將-Xmx和-Xms設(shè)置為一樣可以避免堆自動(dòng)擴(kuò)展。大的項(xiàng)目-Xmx和-Xms一般都要設(shè)置到10G、20G甚至還要高
(3)-verbose:gc
表示輸出虛擬機(jī)中GC的詳細(xì)情況
(4)-Xss128k
表示可以設(shè)置虛擬機(jī)棧的大小為128k
(5)-Xoss128k
表示設(shè)置本地方法棧的大小為128k。不過(guò)HotSpot并不區(qū)分虛擬機(jī)棧和本地方法棧,因此對(duì)于HotSpot來(lái)說(shuō)這個(gè)參數(shù)是無(wú)效的
(6)-XX:PermSize=10M
表示JVM初始分配的永久代的容量,必須以M為單位
(7)-XX:MaxPermSize=10M
表示JVM允許分配的永久代的最大容量,必須以M為單位,大部分情況下這個(gè)參數(shù)默認(rèn)為64M
(8)-Xnoclassgc
表示關(guān)閉JVM對(duì)類(lèi)的垃圾回收
(9)-XX:+TraceClassLoading
表示查看類(lèi)的加載信息
(10)-XX:+TraceClassUnLoading
表示查看類(lèi)的卸載信息
(11)-XX:NewRatio=4
表示設(shè)置年輕代:老年代的大小比值為1:4,這意味著年輕代占整個(gè)堆的1/5
(12)-XX:SurvivorRatio=8
表示設(shè)置2個(gè)Survivor區(qū):1個(gè)Eden區(qū)的大小比值為2:8,這意味著Survivor區(qū)占整個(gè)年輕代的1/5,這個(gè)參數(shù)默認(rèn)為8
(13)-Xmn20M
表示設(shè)置年輕代的大小為20M
(14)-XX:+HeapDumpOnOutOfMemoryError
表示可以讓虛擬機(jī)在出現(xiàn)內(nèi)存溢出異常時(shí)Dump出當(dāng)前的堆內(nèi)存轉(zhuǎn)儲(chǔ)快照
(15)-XX:+UseG1GC
表示讓JVM使用G1垃圾收集器
(16)-XX:+PrintGCDetails
表示在控制臺(tái)上打印出GC具體細(xì)節(jié)
(17)-XX:+PrintGC
表示在控制臺(tái)上打印出GC信息
(18)-XX:PretenureSizeThreshold=3145728
表示對(duì)象大于3145728(3M)時(shí)直接進(jìn)入老年代分配,這里只能以字節(jié)作為單位
(19)-XX:MaxTenuringThreshold=1
表示對(duì)象年齡大于1,自動(dòng)進(jìn)入老年代
(20)-XX:CompileThreshold=1000
表示一個(gè)方法被調(diào)用1000次之后,會(huì)被認(rèn)為是熱點(diǎn)代碼,并觸發(fā)即時(shí)編譯
(21)-XX:+PrintHeapAtGC
表示可以看到每次GC前后堆內(nèi)存布局
(22)-XX:+PrintTLAB
表示可以看到TLAB的使用情況
(23)-XX:+UseSpining
開(kāi)啟自旋鎖
(24)-XX:PreBlockSpin
更改自旋鎖的自旋次數(shù),使用這個(gè)參數(shù)必須先開(kāi)啟自旋鎖
?
怎么用MyEclipse設(shè)置虛擬機(jī)參數(shù)
右鍵類(lèi)-->Run as-->Run Configurations...
Java Application里面選到自己的類(lèi),選擇Arguments,VM arguments空白部分就可以設(shè)置虛擬機(jī)參數(shù)了。如果點(diǎn)擊了Run Configurations沒(méi)有出現(xiàn)自己的類(lèi)的話(huà)也沒(méi)關(guān)系,雙擊一下Java Application就好了
?
后記
Java虛擬機(jī)參數(shù)有上百個(gè),性能調(diào)優(yōu)中很大一塊就是選擇這上百個(gè)參數(shù)中的某些重要參數(shù)進(jìn)行設(shè)置,并且根據(jù)項(xiàng)目運(yùn)行情況對(duì)參數(shù)進(jìn)行不斷調(diào)整以求達(dá)到一個(gè)性能最佳點(diǎn)。性能調(diào)優(yōu)說(shuō)有捷徑也有捷徑,百度搜一份別人推薦的JVM參數(shù)設(shè)置改改就好了,那至于具體好不好就說(shuō)不上了,但起碼保證能用吧;性能調(diào)優(yōu)說(shuō)沒(méi)捷徑也沒(méi)捷徑,如果對(duì)JVM的性能有嚴(yán)苛的要求并且希望細(xì)化到每一個(gè)小點(diǎn),達(dá)到能達(dá)到的最佳值,那首先就必須對(duì)于Java虛擬機(jī),對(duì)于每一個(gè)虛擬機(jī)參數(shù)有著深刻的理解才行。最近幾年興起了一個(gè)叫做性能調(diào)優(yōu)師的職位,也證明了性能優(yōu)化的重要性,反正從個(gè)人的角度看,性能調(diào)優(yōu)絕對(duì)是一門(mén)學(xué)問(wèn),不是那么簡(jiǎn)單的,打好基礎(chǔ)才是王道。
轉(zhuǎn)載地址:http://www.cnblogs.com/xrq730/p/4830692.html
?
轉(zhuǎn)載于:https://www.cnblogs.com/haitaofeiyang/p/7770812.html
總結(jié)
以上是生活随笔為你收集整理的Java虚拟机5:常用JVM命令参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 20171101从现在开始就请有计划的学
- 下一篇: Openshift API部分源码学习笔