JVM状态监控与OOM案例分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Jconsole 能做什么
• • • • • • • Jvm summary信息 Memory状态监控 Threads状态监控 Classes状态监控 VM摘要 Mbeans监控与操作 插件扩展的支持
Jconsole
OOM案例分析
• 为什么会有OOM • OOM都在哪里发生
内存溢出(OOM)
Jdk6u7之后新增visualvm,功能更加强大 • Jconsole的主要功能jvm summary,memory,threads, classes,mbeans都包含在内 • 支持cpu,memory的sampler • 支持visual GC • 支持Thread dump • 支持Buffer pools • 支持application snapshot • 支持各种快照的离线分析 • 支持插件扩展
Visualvm使用演示
THANKS!
案例:Native内存泄露
MCPACK内存泄露(JNI allocated memory)
• 内存资源被持续消耗, 直至全部耗光,swap分 区开始使用 • CPU 资源在某一点突然 上升,且为系统时间占 用 • Jvm 内存回收正常
案例:Native 内存泄露(2)
• 堆内存使用正常
From Jconsole toVisualvm
• 对象的引用没有被释放 • JVM内存溢出
– 主要是压力过大时,内存来不及回收,内存使用量达到虚拟 机限制 – 经常是由于不合理的内存使用或者应用服务器配置不当引起
• Java进程调用操作系统级资源没有释放 – JNI调用等Native方法相关
案例:堆溢出
320用户在线,执行事务,TOMCAT内存溢 出
JVM监控
• • • • JMX接口配置 Jcosole Jvisualvm 其他JDK自带工具
源自文库
JMX接口配置
在虚拟机启动参数中增加
set CATALINA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=%my.jmx.port% \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false"
JVM状态监控与OOM案例分析
beiyu95
主要内容
Java内存结构 JVM状态监控 OOM案例 From Jconsole to visualvm
Jvm architecture specification
Java process heap
Java Object Heap
Java process heap(其他内存结构)
案例:OutOfMemoryError: PermGen space
• 原因:这部分用来存放class和Meta信息Class在被 Load的时候被放 入PermGen space区域,它和和存放Instance的Heap区域不同 ,GC(Garbage Collection)不会在主程序运行期对PermGen space进行 清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现 PermGen space错误。 • 解决办法:在JAVA虚拟机启动参数中将-XX:MaxPermSize=256M 的值设置到足够大(如256)
相关文档
最新文档