jvm虚拟机类装载子系统、运行时数据区、字节码执行引擎静态变量实际存储位置随JDK版本变化JDK7及以前在方法区永久代JDK8及以后在堆中元空间只存类元数据堆中年轻代占比1/3老年代占比2/3年轻代分Eden、S0、S1 811minor gc 发生在Eden满full gc 老年代满 回收整个堆一次gc对象头分代年龄1 15后被放入到老年代gcroot根节点线程栈的本地变量、静态变量、本地方法栈的变量STW收集垃圾过程太复杂java虚拟机调优目的是减少full GC对象动态年龄判断机制、分配担保机制内存大小分配 -Xms -Xmx堆的大小 -Xmn新生代大小 -XX:MetaspaceSize 元空间的初始大小-XX:MaxMetaspaceSize元空间的最大大小使用直接内存 默认大小21M 触发full gc 栈的大小 -Xss 512kmajor gc 等同于fullgc 等同于老年代的回收class对象在堆里面线程结束对应的栈内存全部释放