5.1概述
5.2案例分析
5.2.1高性能硬件上的程序部署
兩種方式
通過64位JDK使用大內存
內存回收導致長時間停頓
現階段,64位JDK的性能結果普遍低于32位JDK
需要保證程序穩定,因為產生堆棧溢出幾乎無法產生堆轉儲快照,產生了也無法分析
由于指針膨脹、數據類型對齊補白等因素,64位消耗內存更大
通過若干個32位虛擬機建立邏輯集群來利用硬件資源
避免節點競爭全局資源,例如磁盤競爭
很難最高效率的利用某些資源池
各節點不可避免的受到32的內存限制
大量使用本地緩存的應用,造成內存浪費,考慮改為集中式緩存
5.2.2集群間同步導致內存溢出
5.2.3堆外內存導致的溢出錯誤
除了堆和永久代之外,以下區域受操作系統進程最大內存限制
Direct Momory
線程堆棧
socket緩存區
JNI方法
虛擬機和GC
5.2.4外部命令導致系統緩慢
5.2.5服務器JVM進程奔潰
5.2.6不恰當數據結構導致內存占用過大
5.2.7由windows虛擬內存導致長時間停頓
5.3實戰:Eclipse運行速度調優
5.3.1 調優前的程序運行狀態
5.3.2 升級jdk 1.6的性能變化及兼容問題
5.3.3 編譯時間和類加載時間的優化
5.3.4 調整內存設置控制垃圾收集頻率
5.3.5 選擇收集器降低延遲
參考文獻:
[1] 深入理解Java虛擬機 第二版 --周志明