首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

WebLogic JRockit JVM 調優全攻略:堆、Nursery、GC、線程與 Method Profiler 實戰

     編輯:Java 相關知識

前言

JRockit 是自適應 JVM,能自動適應硬體,調優重點在於人工干預的關鍵參數:堆大小、Nursery、GC 策略、線程模型。本文系統整理啟動選項、調優步驟、命令行選項表,並以 Method Profiler 診斷 CMP Entity Bean 效能瓶頸為實戰案例。

一、關鍵調優參數

參數說明建議值/策略
-Xms初始堆大小設定與 -Xmx 相同,避免動態擴縮開銷
-Xmx最大堆大小物理記憶體 75% (如 1024M 物理 → 768M),IA32 上限 1.8G
-XnsNursery (新生代) 大小大量短命物件時調大;gencon 預設 10M/CPU
-XgcGC 策略gencon (分代並發) 追求低停頓;parallel 追求高吞吐
-Xcleartype記憶體清理時機gc/alloc/local,IA32 預設 alloc
-Xallocationtype線程分配類型堆 >128M 用 local;大量線程用 global 減少碎片
-Xss線程棧大小預設 IA32 Win 64K、Linux 128K;大量線程可調小
-Xthinthreads輕量線程 (實驗性)Linux 下大量線程有效,IA64 不支援,生產慎用

二、調優步驟建議

  1. 確定目標:低延遲 (響應性) vs 高吞吐
  2. 設定堆:-Xms=-Xmx=物理 75%,多應用共存時尤為重要
  3. 選 GC:
    • 低延遲:-Xgc:gencon + 適度增大 Nursery (-Xns),監控 -Xgcpause
    • 高吞吐:-Xgc:parallel + 最大化堆
  4. 分析 GC:-Xgcreport 產生報表;-Xverbose:memory 觀察停頓 (僅調試用)
  5. 調線程:>100 線程時考慮 -Xthinthreads + -Xallocationtype:global
  6. 程式碼層面:Intel VTune 或 -Xjvmpi 找出熱點方法

三、命令行選項速查表

-X                  顯示擴充選項
-Xallocationtype    global|local  線程分配類型
-Xbootclasspath     類搜尋路徑
-Xcleartype         gc|local|alloc  清理時機
-Xgc                gencopy|singlecon|gencon|parallel  GC 策略
-Xgcpause           列印 GC 停頓時間
-Xgcreport          列印 GC 報告
-Xjvmpi             JVMPI 事件控制
-Xmanagement        啟用管理伺服器
-Xms / -Xmx         初始/最大堆 (K/M/G)
-Xns                Nursery 大小
-Xss                線程棧大小
-Xthinthreads       輕量線程
-Xverbose           codegen|cpuinfo|gc|load|memory|Opt
-Xverify            完整 bytecode 驗證

四、Method Profiler 實戰案例:CMP Entity Bean 瓶頸診斷

問題現象

壓力測試中 TPS 極低,Response Time 隨時間近線性增長。

診斷步驟

  1. 啟動參數加入 -Xmanagement
  2. 啟動 JRockit Management Console 連線
  3. Mode 設為 developer,Method Profiler 加入觀察類別
  4. 開始統計,觀察 Time/Inv(ns) 指標

發現

  • Stateful4CMPBean.ejbCreate() 為瓶頸
  • getNextId()、home.create() 佔比小
  • sheep.setName() 佔絕大多數時間

進一步實驗

並發用戶setName 耗時getNextId 耗時home.create 耗時
1XYZ
22XYZ
33XYZ

結論:setName() 為串行化邏輯,Oracle UPDATE 隔離級別為 SERIALIZABLE。

解決

移除 sheep.setName(...) 該行程式碼,重測 TPS 大幅提升,Response Time 平穩。

總結

JRockit 調優核心在於「測量 → 分析 → 調整 → 驗證」閉環。Method Profiler 提供程式碼級熱點定位,配合 GC/線程參數微調,能最大化硬體效能。生產環境建議先建立基準測試,再逐步調整單一參數觀察效果。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved