文章目錄
一、堆的核心概述
二、設置堆內存大小與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
九、小結堆空間的參數設置
十、堆是分配對象的唯一選擇嗎?
結論:開發中能使用局部變量的,就不要使用在方法外定義。