jvm的结构以及相关命令介绍
1 jvm结构
堆配置
-xms:最小堆内存(初始大小)
-Xmx: 最大堆内存
-XX:MaxTenuringThreshold:对象进入老年代的Minor GC次数,默认为15次。
-Xmn: 年轻代的大小
-Xss: 设置每个线程的栈大小
-XX:+HeapDumpOnOutOfMemoryError : 开启开关;当vm出现OOM时Dump当前内存堆转储快照 hprof文件
-XX:HeapDumpPath=/home/hxb/cds/pms/pms-flow/logs/ : 当前内存堆转储快照文件的路径
-XX:MetaspaceSize: 触发FGC的最小阈值
-XX:MaxMetaspaceSize: 触发FGC的最大阈值
-XX:SurvivorRatio :新生代中Eden区域和Survivor区域的比例,默认为8,也就是Eden区占新生代的8/10,2个Survivor区各占1/10
-XX:MetaspaceSize: # 设置初始元空间大小
-XX:MaxMetaspaceSize: # 设置最大元空间大小``
(1)方法区
(2)堆区(年轻代和老年代的比例是1:2, 年轻代占堆区的1/3)
1 年轻代: 用于存储新创建的对象,当对象存活过一定的时间后会被移动到老年代。(Eden和Survivor区比例:8:1:1)
年轻代包括:
Eden区:
2个Survivor区 (一个from区 一个to区)
老年代
老年代占整个堆空间的2/3,存储生命周期较长的对象。
<3> 永久代(java8之后的版本被元空间(Metaspace)取代)
<4> 元空间
在Java 8及以后版本中引入,用于替代永久代,存储类元数据,不占用JVM堆空间,使用本地内存。元空间的调优更加灵活,你可以根据需要调整元空间的大小,元空间配置的大小只是限制,JVM会在实际使用时动态调整。
(3)虚拟机栈
(4)本地方法栈
(5)程序计数器