文章目錄
- 一、堆的核心概述
- 二、設定堆記憶體大小與OOM
- 三、年輕代與老年代
- 四、圖解物件分配程序
- 五、Minor GC、Major GC、Full GC
- 六、堆空間分代思想
- 七、記憶體分配策略
- 八、為物件分配記憶體:TLAB
- 九、小結堆空間的引數設定
- 十、堆是分配物件的唯一選擇嗎?
一、堆的核心概述






二、設定堆記憶體大小與OOM

- 開發中建議將初始堆記憶體和最大的堆記憶體設定為相同的值
- 查看設定的引數:
方式一:jps / jstat -gc 行程id
方式二:-XX:PrintGCDetails
jps指令是jdk中bin目錄下的一個指令,作用是查看當前程式運行的行程
jstat指令是用來查看jvm在GC的時候的統計資訊,現實想看的行程的記憶體使用情況
三、年輕代與老年代


jinfo -flag NewRatio 行程id //查看新生代和老年代的比例



四、圖解物件分配程序


當伊甸園區滿的時候,會觸發垃圾回收器:YGC/Minor GC
注意:幸存者區滿的時候不會觸發YGC,但不代表不會回收,當伊甸園區滿的時候觸發了YGC,此時若幸存者區存在物件不再被參考,這時也會回收該區的垃圾物件,



五、Minor GC、Major GC、Full GC





六、堆空間分代思想


七、記憶體分配策略


八、為物件分配記憶體:TLAB





九、小結堆空間的引數設定



十、堆是分配物件的唯一選擇嗎?






結論:開發中能使用區域變數的,就不要使用在方法外定義,










轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/239604.html
標籤:其他
上一篇:centos8搭建ftp匿名登錄
下一篇:華為ensp常用簡單命令(一)



