堆大小設定
jvm 中最大堆大小有三方面限制:相關作業系統的資料模型(32-bt還是64-bit)限制;系統的可用虛擬記憶體限制;系統的可用物理記憶體限制。32位系統下,一般限制在1.5g~2g;64為作業系統對記憶體無限制。我在windows server 2003 系統,3.5g物理記憶體,jdk5.0下測試,最大可設定為1478m。
典型設定:
**器選擇
jvm給了三種選擇:序列收集器、並行收集器、併發收集器,但是序列收集器只適用於小資料量的情況,所以這裡的選擇主要針對並行收集器和併發收集器。預設情況下,jdk5.0以前都是使用序列收集器,如果想使用其他收集器需要在啟動時加入相應引數。jdk5.0以後,jvm會根據當前系統配置進行判斷。吞吐量優先的並行收集器
如上文所述,並行收集器主要以到達一定的吞吐量為目標,適用於科學技術和後台處理等。
典型配置:
響應時間優先的併發收集器
如上文所述,併發收集器主要是保證系統的響應時間,減少垃圾收集時的停頓時間。適用於應用伺服器、電信領域等。
典型配置:
常見配置彙總堆設定
收集器設定
垃圾**統計資訊
並行收集器設定
併發收集器設定
四、調優總結
年輕代大小選擇
年老代大小選擇減少年輕代和年老代花費的時間,一般會提高應用的效率
吞吐量優先的應用:一般吞吐量優先的應用都有乙個很大的年輕代和乙個較小的年老代。原因是,這樣可以盡可能**掉大部分短期物件,減少中期的物件,而年老代盡存放長期存活物件。
較小堆引起的碎片問題
因為年老代的併發收集器使用標記、清除演算法,所以不會對堆進行壓縮。當收集器**時,他會把相鄰的空間進行合併,這樣可以分配給較大的物件。但是,當堆空間較小時,執行一段時間以後,就會出現「碎片」,如果併發收集器找不到足夠的空間,那麼併發收集器將會停止,然後使用傳統的標記、清除方式進行**。如果出現「碎片」,可能需要進行如下配置:
Spark效能調優 JVM調優
通過一張圖讓你明白以下四個問題 1.jvm gc機制,堆記憶體的組成 2.spark的調優為什麼會和jvm的調優會有關聯?因為scala也是基於jvm執行的語言 3.spark中oom產生的原因 4.如何在jvm這個層面上來對spark進行調優 補充 spark程式執行時 jvm堆記憶體分配比例 r...
JVM效能調優
gc 優化的兩個目標 將進入老年代的物件數量降到最低 減少 full gc 的執行時間 gc 優化的基本原則是 將不同的 gc 引數應用到兩個及以上的伺服器上然後比較它們的效能,然後將那些被證明可以提高效能或減少 gc 執行時間的引數應用於最終的工作伺服器上。gc 優化需要考慮的 jvm 引數 型別...
Jvm調優的方法
其實,jvm調優只要是指的記憶體管理方面的調優,包括各個代的大小,gc策若,由於gc動作會導致應用執行緒的掛起,嚴重影響效能,這些調優對於應用很重要,下面這些方法主要是為了盡量降低gc所導致的應用暫停時間的方法 一 代大小的調優。1 避免新生代大小設定的過小 主要是minorgc和fullgc的關係...