ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

jvm调优参数以及常见OOM

2020-05-14 17:52:41  阅读:281  来源: 互联网

标签:lang java OOM XX 调优 GC 内存 jvm OutOfMemoryError


--JVM 有哪些常用参数

-Xms10m 初始堆内存(1/64)
-Xmx10m 最大堆内存(1/4)
-XX:MaxDirectMemorySize=5m 最大直接内存

-XX:MetaspaceSize=10m 初始元空间大小
-XX:MaxMetaspaceSize=10m 最大元空间

-Xmn10m 设置年轻代的大小,一般不用动!
-XX:SurvivorRatio 设置年轻代各区的比例
uintx SurvivorRatio = 8 Eden:s0:s1 = 8:1:1

-XX:NewRatio 设置年轻代与老年代的比例
-XX:NewRatio = 2 新生代1,老年代是2,默认新生代整个堆的 1/3
-XX:NewRatio = 4 新生代1,老年代是4,默认新生代整个堆的 1/5;

-XX:MaxTenuringThreshold=15 设置年轻代进入老年代的需要的存活次数(默认是15次)
jinfo -flag MaxTenuringThreshold pid #查看对象进入老年代的最大存活次数

-XX:+PrintGCDetails 输出详细的垃圾回收信息


java -XX:+PrintCommandLineFlags -version # 默认的垃圾回收器

-XX:+PrintFlagsInitial #查看 java 环境初始默认值


---GC
-XX:+UseParallelGC #jdk1.8默认gc收集器 PSYoungGen(复制算法) + ParOldGen(标记整理压缩)
-XX:+UseG1GC #使用G1收集器
-XX:+UseParNewGc #并行GC【不推荐使用 】 ParNew + Tenured
-XX:+UseSerialGC #串行GC[DefNew+Tenured]

 

OOM:

// 出现问题:java.lang.OutOfMemoryError: Java heap space
// -Xmx10m -Xms10m -XX:+HeapDumpOnOutOfMemoryError

// GC 回收时间过长也会导致 OOM
// 可能CPU占用率一直是100%,GC 但是没有什么效果!
// -Xms10m -Xmx10m -XX:MaxDirectMemorySize=5m -XX:+PrintGCDetails
java.lang.OutOfMemoryError: GC overhead limit exceeded


// -Xms10m -Xmx10m -XX:MaxDirectMemorySize=5m -XX:+PrintGCDetails
// 故意破坏!
// ByteBuffer.allocate(); 分配JVM的堆内存,属于GC管辖
// ByteBuffer.allocateDirect() ; 分配本地OS内存,不属于GC管辖
java.lang.OutOfMemoryError: Direct buffer memory 基础缓冲区的错误!


// 高并发 , unable to create native Thread这个错误更多的时候和平台有关!
// 1、应用创建的线程太多!
// 2、服务器不允许你创建这么多线程
java.lang.OutOfMemoryError: unable to create native Thread


// -XX:MetaspaceSize=10m -XX:MaxMetaspaceSize=10m
// 不断的加载对象! Spring的 cglib Enhancer不停创建对象
java.lang.OutOfMemoryError: Metaspace 元空间报错

-- 栈溢出(递归调用方法自身)
-Xss10m
// Exception in thread "main" java.lang.StackOverflowError

标签:lang,java,OOM,XX,调优,GC,内存,jvm,OutOfMemoryError
来源: https://www.cnblogs.com/alenblue/p/12890298.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有