- 栈:
存放局部变量。
栈是线程栈,只有一个线程执行,会在栈内存中分配空间,存放线程私有的区域。 stackoverflow就在此. - 局部变量表:
存放局部变量 - 动态链接:
将符号引用改为直接引用,存放的是地址值.
jinfo -flags pid 可以查看当前jvm的默认参数
-
运行时数据区:
Screen Shot 2022-03-12 at 11.39.52 PM.png
堆:
由于复制算法来回copy耗费内存,所以大对象会直接进入到老年代.
copy 15次以后就会进入到老年代中.
同时老年代也是fullgc重点发生的区域.
- GC
- MinorGC,YoungGC
- Old GC
- FullGC (回收整体区域,同时包括堆外内存)
-
Survivor分区的好处是减少碎片化的产生,eden满了会移动一些到s区域.因为s0可能不连续,会导致碎片化问题.
s0 s1 复活限制是15次.
-XX:MaxTenuringThreshold 设置次数 -
堆内存是内存共享的.
JVM参数
-x 非标准参数,jdk版本可能会变动
-xx 用的最多的参数
-Xms 1000M ---> -xx:InitialHeapSize = 1000M 初始化堆大小
- Xmx 最大堆大小
- Xss 线程栈大小
java -XX:+PrintFlagsFinal -version > flags.txt
- PrintFlagsFInal 查询
MaxHeapSize 堆大小
/1024 = xxx kb
xxx kb /1024 = xxx MB
所以答应的是字节单位.
-XX: 省略
InitialHeapSize 初始化堆大小
MapHeapSize 最大堆大小
MaxNewSize 年轻代大小
OldSize 老年代大小
MetaspaceSize 方法区大小
NewRatio: 新老年代比例
网友评论