【029】2020.12.12 週六 Java JVM調優案例05


JVM調優案例05

1.由安全點導致長時間停頓

    1.1) 問題

        一HBase集羣垃圾回收時間常常在3秒以上

    1.2) 原因

        HBase的RPC Server的Listener線程執行到了一個連接超時清理函數的可數循環裏,因爲是int 索引,HotSpot沒有設置安全點,導致GC時,必須等待所有循環都跑完才能進入到安全點,表現爲長時間的停頓

    1.3)  解決

        把循環索引的數據類型從int修改爲Long,作爲不可數循環設置安全點,不用等待所有循環都跑完就鞥進行垃圾回收

    1.4) 其他

        三個時間概念

                ==user: 進程執行用戶態代碼所花費的處理器時間

                ==sys: 進程執行核心態代碼所花費的處理器時間

                == real: 執行動作從開始到結束時所花費的時鐘時間

2. Eclipse運行速度調優

      2.1) 概述

        使用作者自行編寫的Eclipse的插件,獲取到Eclipse的啓動時間是15秒,GC耗時4秒多,加載類也是4秒多即時編譯約2秒

    2.2) 升級JDK版本的性能變化和兼容問題

       ==問題

            升級JDK5到JDK6後Eclipse報OOM

       ==原因

            使用VisualVM 查看,原來是默認的永久代的空間大小爲64MB,太小了,所以發生了OOM            

       ==解決

            手動設置永久代的空間大小爲250MB


2.3) 編譯時間和類加載時間的優化

    JDK6取消字節碼校驗啓動時間比JDK5稍快

    HotSpot的2個編譯器

        JIT編譯

        即時編譯


2.4)調整內存設置控制垃圾收集頻率

    把新生代銅梁提升到128MB避免動態內存擴展

    屏蔽系統的顯性垃圾回收System.gc()

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