5.如何從JVM中獲取信息來(lái)進(jìn)行調(diào)整
-verbose.gc開(kāi)關(guān)可顯示gc的操作內(nèi)容。打開(kāi)它,可以顯示最忙和最空閑收集行為發(fā)生的時(shí)間、收集前后的內(nèi)存大小、收集需要的時(shí)間等。打開(kāi)-xx:+ printgcdetails開(kāi)關(guān),可以詳細(xì)了解gc中的變化。打開(kāi)-XX: + PrintGCTimeStamps開(kāi)關(guān),可以了解這些垃圾收集發(fā)生的時(shí)間,自jvm啟動(dòng)以后以秒計(jì)量。最后,通過(guò)-xx: + PrintHeapAtGC開(kāi)關(guān)了解堆的更詳細(xì)的信息。為了了解新域的情況,可以通過(guò)-XX:=PrintTenuringDistribution開(kāi)關(guān)了解獲得使用期的對(duì)象權(quán)。
6.Pdm系統(tǒng)JVM調(diào)整
6.1.服務(wù)器:前提內(nèi)存1G 單CPU 可通過(guò)如下參數(shù)進(jìn)行調(diào)整:-server 啟用服務(wù)器模式(如果CPU多,服務(wù)器機(jī)建議使用此項(xiàng))
-Xms,-Xmx一般設(shè)為同樣大小。 800m
-Xmn 是將NewSize與MaxNewSize設(shè)為一致。320m
-XX:PerSize 64m
-XX:NewSize 320m 此值設(shè)大可調(diào)大新對(duì)象區(qū),減少Full GC次數(shù)
-XX:MaxNewSize 320m
-XX:NewRato NewSize設(shè)了可不設(shè)。4
-XX: SurvivorRatio 4
-XX:userParNewGC 可用來(lái)設(shè)置并行收集
-XX:ParallelGCThreads 可用來(lái)增加并行度 4
-XXUseParallelGC 設(shè)置后可以使用并行清除收集器
-XX:UseAdaptiveSizePolicy 與上面一個(gè)聯(lián)合使用效果更好,利用它可以自動(dòng)優(yōu)化新域大小以及救助空間比值
6.2.客戶機(jī):通過(guò)在JNLP文件中設(shè)置參數(shù)來(lái)調(diào)整客戶端JVM
JNLP中參數(shù):initial-heap-size和max-heap-size
這可以在framework的RequestManager中生成JNLP文件時(shí)加入上述參數(shù),但是這些值是要求根據(jù)客戶機(jī)的硬件狀態(tài)變化的(如客戶機(jī)的內(nèi)存大小等)。建議這兩個(gè)參數(shù)值設(shè)為客戶機(jī)可用內(nèi)存的60%(有待測(cè)試)。為了在動(dòng)態(tài)生成JNLP時(shí)以上兩個(gè)參數(shù)值能夠隨客戶機(jī)不同而不同,可靠慮獲得客戶機(jī)系統(tǒng)信息并將這些嵌到首頁(yè)index.jsp中作為連接請(qǐng)求的參數(shù)。
在設(shè)置了上述參數(shù)后可以通過(guò)Visualgc 來(lái)觀察垃圾回收的一些參數(shù)狀態(tài),再做相應(yīng)的調(diào)整來(lái)改善性能。一般的標(biāo)準(zhǔn)是減少fullgc的次數(shù),最好硬件支持使用并行垃圾回收(要求多CPU)。