java虛擬機調優常識

jvm的調整沒什麼技巧,只有一些原則,要根據自己應用的特點來設定調優的目標,這裏收集了一些內容,權當記錄

 

Java heap (Xmx, Xms) 和java進程的heap是兩回事情

java進程的heap包含:

   Java Heap

   Permanent Generation

   Thread stacks

   Native code

   Directly allocated memory

   Code generation

   Garbage collection

   TCP buffers


因此我們在設置,jvm參數的時候得小心一點,一般我們會設置java heap 和 perm gen,結合操作系統內存的大小和應用特點,選取一個合理的值。

-Xms/-Xmx
java heap並不是越大越好,對他的一般優化原則是夠用的情況下,儘可能的小,因爲太大的話會浪費內存,同時影響GC的效率

-XX:NewSize/-XX:NewRatio
一般設置爲java heap的25%-33%,太大或者太小都會影響GC,要根據應用的特點,對象生命長短週期的比例來調整

GC相關調整的目標:
* 短生命週期的對象不要進入Old區
* 短生命週期的對象在minor GC的時候幹掉
* 長生命週期的對象要放到Old區
* 長生命週期的對象可以被Full GC清理掉,但是Full GC要調整到儘量少發生

不管採用什麼算法,GC總是會導致應用暫停的,這個時間長短從毫秒到秒之間不等,因此會影響應用的相應時間,多長的停頓在接受範圍內取決於應用的特徵,可以通過設置GC停頓的時間來調整(注意只是期望的時間,而不是絕對)
-XX:MaxGCPauseMillis -XX:MaxGCMinorPauseMillis  ,一般設置比較短的停頓時間會導致相對較頻繁的GC,根據應用的情況來調整


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章