文章目录

  • 一、堆的核心概述
  • 二、设置堆内存大小与OOM
  • 三、年轻代与老年代
  • 四、图解对象分配过程
  • 五、Minor GC、Major GC、Full GC
  • 六、堆空间分代思想
  • 七、内存分配策略
  • 八、为对象分配内存:TLAB
  • 九、小结堆空间的参数设置
  • 十、堆是分配对象的唯一选择吗?



一、堆的核心概述

RES 堆外内存怎么查看 查看堆内存大小_java


RES 堆外内存怎么查看 查看堆内存大小_java_02


RES 堆外内存怎么查看 查看堆内存大小_RES 堆外内存怎么查看_03


RES 堆外内存怎么查看 查看堆内存大小_面试_04


RES 堆外内存怎么查看 查看堆内存大小_java_05


RES 堆外内存怎么查看 查看堆内存大小_RES 堆外内存怎么查看_06

二、设置堆内存大小与OOM

RES 堆外内存怎么查看 查看堆内存大小_RES 堆外内存怎么查看_07

  1. 开发中建议将初始堆内存和最大的堆内存设置为相同的值
  2. 查看设置的参数:
    方式一:jps / jstat -gc 进程id
    方式二:-XX:PrintGCDetails

jps指令是jdk中bin目录下的一个指令,作用是查看当前程序运行的进程
jstat指令是用来查看jvm在GC的时候的统计信息,现实想看的进程的内存使用情况

RES 堆外内存怎么查看 查看堆内存大小_jvm_08


RES 堆外内存怎么查看 查看堆内存大小_java_09


RES 堆外内存怎么查看 查看堆内存大小_面试_10

三、年轻代与老年代

RES 堆外内存怎么查看 查看堆内存大小_java_11


RES 堆外内存怎么查看 查看堆内存大小_堆栈_12

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

RES 堆外内存怎么查看 查看堆内存大小_jvm_13


RES 堆外内存怎么查看 查看堆内存大小_jvm_14


RES 堆外内存怎么查看 查看堆内存大小_java_15

四、图解对象分配过程

RES 堆外内存怎么查看 查看堆内存大小_堆栈_16


RES 堆外内存怎么查看 查看堆内存大小_java_17


当伊甸园区满的时候,会触发垃圾回收器:YGC/Minor GC

注意:幸存者区满的时候不会触发YGC,但不代表不会回收,当伊甸园区满的时候触发了YGC,此时若幸存者区存在对象不再被引用,这时也会回收该区的垃圾对象。

RES 堆外内存怎么查看 查看堆内存大小_堆栈_18


RES 堆外内存怎么查看 查看堆内存大小_jvm_19


RES 堆外内存怎么查看 查看堆内存大小_jvm_20

五、Minor GC、Major GC、Full GC

RES 堆外内存怎么查看 查看堆内存大小_java_21


RES 堆外内存怎么查看 查看堆内存大小_jvm_22


RES 堆外内存怎么查看 查看堆内存大小_jvm_23


RES 堆外内存怎么查看 查看堆内存大小_堆栈_24


RES 堆外内存怎么查看 查看堆内存大小_面试_25

六、堆空间分代思想

RES 堆外内存怎么查看 查看堆内存大小_RES 堆外内存怎么查看_26


RES 堆外内存怎么查看 查看堆内存大小_堆栈_27

七、内存分配策略

RES 堆外内存怎么查看 查看堆内存大小_java_28


RES 堆外内存怎么查看 查看堆内存大小_jvm_29

八、为对象分配内存:TLAB

RES 堆外内存怎么查看 查看堆内存大小_RES 堆外内存怎么查看_30


RES 堆外内存怎么查看 查看堆内存大小_RES 堆外内存怎么查看_31


RES 堆外内存怎么查看 查看堆内存大小_jvm_32


RES 堆外内存怎么查看 查看堆内存大小_RES 堆外内存怎么查看_33


RES 堆外内存怎么查看 查看堆内存大小_面试_34

九、小结堆空间的参数设置

RES 堆外内存怎么查看 查看堆内存大小_面试_35


RES 堆外内存怎么查看 查看堆内存大小_堆栈_36


RES 堆外内存怎么查看 查看堆内存大小_java_37

十、堆是分配对象的唯一选择吗?

RES 堆外内存怎么查看 查看堆内存大小_堆栈_38


RES 堆外内存怎么查看 查看堆内存大小_RES 堆外内存怎么查看_39


RES 堆外内存怎么查看 查看堆内存大小_jvm_40


RES 堆外内存怎么查看 查看堆内存大小_jvm_41


RES 堆外内存怎么查看 查看堆内存大小_堆栈_42


RES 堆外内存怎么查看 查看堆内存大小_RES 堆外内存怎么查看_43


结论:开发中能使用局部变量的,就不要使用在方法外定义。

RES 堆外内存怎么查看 查看堆内存大小_java_44


RES 堆外内存怎么查看 查看堆内存大小_RES 堆外内存怎么查看_45


RES 堆外内存怎么查看 查看堆内存大小_堆栈_46


RES 堆外内存怎么查看 查看堆内存大小_面试_47


RES 堆外内存怎么查看 查看堆内存大小_面试_48


RES 堆外内存怎么查看 查看堆内存大小_jvm_49


RES 堆外内存怎么查看 查看堆内存大小_jvm_50


RES 堆外内存怎么查看 查看堆内存大小_RES 堆外内存怎么查看_51


RES 堆外内存怎么查看 查看堆内存大小_面试_52


RES 堆外内存怎么查看 查看堆内存大小_java_53