1、-Xmx
设置初始分配大小,默认为物理内存的"1/64"
2、-Xmx
最大分配内存,默认为物理内存的"1/4"
3、-XX:+PrintGCDetails
输出详细的GC处理日志
查看自己电脑默认配置大小
生成环境最大值和最小值必须设置一样。不然系统内存忽高忽低,系统产生停顿
4、idea设置堆内存的最大值和最小值一样
-xms1024m -Xmx1024m -XX:+PrintGCDetails
5、查看JVM内存分配结构
(PSYoungGen+ParOldGen)/1024=堆内存
JDK1.8之后:Metaspace:元空间
JDK1.7之前:PSPermGen:永久代
6、代码报错OOM
设置JVM大小
报错:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
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在堆(新生区+老年区)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。