JVM-堆参数调整

JVM-堆参数调整_第1张图片

 JVM-堆参数调整_第2张图片

 JVM-堆参数调整_第3张图片

1、-Xms

设置初始分配大小,默认为物理内存的"1/64"

2、-Xmx

最大分配内存,默认为物理内存的"1/4"

3、-XX:+PrintGCDetails

输出详细的GC处理日志

查看自己电脑默认配置大小

JVM-堆参数调整_第4张图片

 生成环境最大值和最小值必须设置一样。不然系统内存忽高忽低,系统产生停顿

4、idea设置堆内存的最大值和最小值一样

JVM-堆参数调整_第5张图片

 JVM-堆参数调整_第6张图片

JVM-堆参数调整_第7张图片

-Xms1024m -Xmx1024m -XX:+PrintGCDetails

5、查看JVM内存分配结构

JVM-堆参数调整_第8张图片

 JVM-堆参数调整_第9张图片

 (PSYoungGen+ParOldGen)/1024=堆内存

JDK1.8之后:Metaspace:元空间

JDK1.7之前:PSPermGen:永久代

6、代码报错OOM

设置JVM大小

JVM-堆参数调整_第10张图片

报错:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 

JVM-堆参数调整_第11张图片

 JVM-堆参数调整_第12张图片

 7、GC日志分析

[GC (Allocation Failure)  :分配失败产生GC

[PSYoungGen: 3994K->486K(4608K)] 3994K->917K(15872K), 0.0006858 secs]

[Times: user=0.00 sys=0.00, real=0.00 secs] 

3994K:GC之前的大小

486K:GC之后的大小

4608K:新生代总共大小

3994K:GC之前老年代的大小

917K:GC之后老年代的大小

15872K:堆的总大小

0.0006858 secs:GC耗时时间

user=0.00:用时

sys=0.00:系统用时

real=0.00:时间耗时

[Full GC (Ergonomics)

[PSYoungGen: 384K->0K(4608K)]

[ParOldGen: 9439K->2145K(11264K)] 9823K->2145K(15872K),

[Metaspace: 3114K->3114K(1056768K)], 0.0020655 secs]

[Times: user=0.00 sys=0.00, real=0.00 secs] 

规律:

名称:GC前内存占用->GC后内存占用(该区内存总大小)

GC在新生区,FULL GC在堆(新生区+老年区)

你可能感兴趣的:(原理,jvm)