jvm虚拟机 堆内存 Eden Survivor 新生代 老年代

新生代
组成: Eden*1 Survivor*2
大小: Eden较大 Survivor较小
内存回收方法: 每次使用Eden和其中一个Survivor 内存回收时, 使用复制算法, 将Eden和Survivor中存活的对象复制到另一个Survivor.
Eden存储条件: 对象被new出来, 存在Eden区
Survivor存储条件: 对象经过一次Minor GC后存活, 移到Survivor区

老年代
内存回收方法: 标记-整理算法, 对所有存活对象移向一端, 清理端边界以外的内存.
存储条件: 对象经过15次Minor GC后存活, 移到老年代

永久代
永远不会回收的内存区, HotSpot虚拟机将此用作方法区保存方法代码, 若方法代码数量太多, 会出现Perm内存不足, 需修改永久代大小

jvm启动参数:
配置堆内存大小 -Xms20m -Xmx200m 初始堆大小20m, 最大堆大小200m
配置Eden与Survivor比例 -XX:SurvivorRatio=8 默认8, 代表Eden:Survivor=8:1
配置新生代晋升老年代需经过Minor GC次数 默认15 -XX:MaxTenuringThreshold=15
配置新生代和老年代比例 -XX:NewRatio=2 默认2, 代表老年代:新生代=2:1
配置永久代大小 -XX:MaxPermSize=128m 设置永久代大小为128m

查看默认jvm堆配置:
无参启动jvm, 用jvisualvm查看jvm参数值.