JVM異常,參數調試

堆溢出測試: @VM args:-verbose:gc -Xms20M -Xmx20M -XX:+PrintGCDetails
棧層級不足探究: @VM args:-Xss128k
常量池內存溢出: @VM args : -XX:PermSize=10M -XX:MaxPermSize=10M
方法區溢出測試,使用技術 CBlib: @VM args : -XX:PermSize=10M -XX:MaxPermSize=10M
直接內存溢出測試:@VM args: -Xmx20M -XX:MaxDirectMemorySize=10M

如果是內存泄漏,可進一步通過工具查看泄漏對象到GC Roots 的引用鏈。於是就
能找到泄漏對象是通過怎樣的路徑與GC Roots 相關聯並導致垃圾收集器無法自動回收
它們的。掌握了泄漏對象的類型信息,以及GC Roots 引用鏈的信息,就可以比較準確
地定位出泄漏代碼的位置。
如果不存在泄漏,換句話說就是內存中的對象確實都還必須存活着,那就應當檢查
虛擬機的堆參數(-Xmx 與-Xms),與機器物理內存對比看是否還可以調大,從代碼上
檢查是否存在某些對象生命週期過長、持有狀態時間過長的情況,嘗試減少程序運行期
的內存消耗。

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