WebSphereApplicationServer内存溢出OOM解析问题-IBM
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不可达对象 可达对象 不可达对象 Root对象
定期回收所有不可达的对象
5
© 2009 IBM Corporation
IBM China Development Lab
什 么是 内 存 溢 出 错误
内存溢出是指应用程序申请的内存大于Java虚拟机能提供的最大内存,
导致应用程序无法继续运行。
当程序申请内存时,JVM首先检查它是否有满足大小的空闲内存,如果没有符合条件的空闲内 存,JVM会启动垃圾回收器工作以释放一部分无用内存,如果垃圾回收后,仍然没有符合条件 的空闲内存,则JVM会抛出内存溢出异常。
内存溢出错误产生的常见原因
– 内存泄漏 – 一次性申请内存过大 – 应用程序负载过大
6
© 2009 IBM Corporation
IBM China Development Lab
目录
什么是内存溢出错误 内存溢出错误分析的信息和工具 常见内存溢出错误分析 内存溢出错误分析实例 总结 Q&A
详细垃圾回收日志功能的位置
– 生成的详细垃圾回收日志位于[WAS 安装目录] \profiles\[profile name]\logs\[server ID] \native_stderr.log文件中
9
© 2009 IBM Corporation
IBM China Development Lab
目录
什么是内存溢出错误 内存溢出错误分析的信息和工具 常见内存溢出错误分析 内存溢出错误分析实例 总结 Q&A
3
© 2009 IBM Corporation
IBM China Development Lab
Java内 存 管 理
Java内 存 分 为 两 部 分
Java Heap – 保存所有的Java对象实例 – 由垃圾回收器维护 – 可以通过”-Xmx”指定最大值 Native Heap – 保存编译的JIT代码、JNI代码中通过 Malloc申请的内存、加载的链接库等
4
© 2009 IBM Corporation
IBM China Development Lab
垃 圾 回 收 器 (GC)的 工 作 原 理
Root对 象 集 合
– 线程栈中的对象 – 静态类变量
可达性判定
– 一个对象,如果存在一条路径,使得它最 终被Root对象所引用,则认为该对象是可 达的。 – 如果不存在这样一条路径,则认为这个对 象是不可达的。
Java Heap
Native Heap
内 存 的 申 请和 释放
– 内存的分配是由程序申请的, – 内存的释放是由虚拟机(JVM)的垃圾回收 器(GC)自动完成的
WAS最 大 堆 设 置
WebSphere默认的最大堆(Java Heap)大小为 256M。如要更改此配置,请在管理控制台的”应 用程序服务器->[server ID]->进程定义->Java虚 拟机”页签进行修改,如右图所示:
10
© 2009 IBM Corporation
IBM China Development Lab
Java heapdump文 件
Heapdump文件能 够帮助我 们分析在内存溢出 错误发生的 时刻,内存中 对象的使用
和分布状况,包括:
– 对象的类型 – 对象的数量 – 各个对象间的引用关系 – 各个对象引用的内存的大小 – ......
详细垃 圾 回 收 日 志 的 查看
native_stderr.log 是文本格式的文件,既可以通 过文本 编辑器直接 查看,也可以通 过 IBM Support Assistant (ISA) 中提供的 The Garbage Collection and Memory Visualizer Tool查看
Javacore文件
Javacore 文件 记录了在内存溢出 发生 时刻, Java应用程序运行的 详细信息,它包括:
1
© 2009 IBM Corporation
IBM China Development Lab
目录
什么是内存溢出错误 内存溢出错误分析的信息和工具 常见内存溢出错误分析 内存溢出问题分析实例 总结 Q&A
2
© 2009 IBM Corporation
IBM China Development Lab
7
© 2009 IBM Corporation
IBM China Development Lab
用 于 分 析 内 存 溢 出 问题的 信 息
详细垃圾回收日志 (verboseGC Log)
– 用于分析JVM垃圾回收的过程
Leabharlann Baidu
Heapdump file
– 用于分析JVM当前内存中的对象使用和分布情况
IBM China Development Lab
WebSphere Application Server 内存溢出 (OOM) 问题解析
邓 刚
WebSphere Front Office for Financial Market & WebSphere MQ Low Latency Messaging 二线技术支持
Javacore file
– 用于分析JVM当前运行的线程信息
8
© 2009 IBM Corporation
IBM China Development Lab
详 细 垃 圾 回 收 日 志 (VerboseGC Log)
详细垃圾回收日志记录了J a v a 虚拟机垃圾回
收器的活动信息,包括:
Heapdump文件不能通 过文本 编辑器直接 查看,我 们可以通 过IBM Support
Assistant (ISA) 中提供的 Memory Analyzer Tool工具来分析,如下 图所示:
11
© 2009 IBM Corporation
IBM China Development Lab
– 内存分配失败时所请求的对象的大小 – GC完成前后,Java内存的大小 – GC完成前后,释放的Java内存的大小 – GC活动的开始和持续时间 – ......
详细垃圾回收日志功能的设定
– 在管理控制台的”应用程序服务器->[Instance ID]->进程定义->Java虚拟机”页签中的“详细 垃圾回收”选项 – 该功能默认是关闭的