1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OOM

理解和探查内存不足/内存泄漏 WebLogic Support Patterns 理解和探查内存不足/内存泄漏 理解和探查内存不足/内存泄漏 OutOfMemoryError/Memory Leak Analyze Utilities Demonstrate II(AIX) 理解和探查内存不足/内存泄漏 MENU Java内存管理的基本概念 内存不足和内存泄漏错误的原因和症状 使用分析工具解决内存不足和内存泄漏错误 预防内存不足和内存泄漏 OutOfMemory分析实例 Java内存管理的基本概念 Java内存 Java 堆内存(heap) Java 堆内存(heap): 是 JVM 用于分配 Java 对象的内存,包含活动对象 和不可用对象 堆大小通常是在服务器启动时使用 java 命令中的 –Xms(最小) –Xmx(最大)标志来定义。 Java内存管理的基本概念 本地内存(native memory): 是 JVM 用于其内部操作的本地内存(非Java内存) JNI 代码和第三方本地模块(例如,本地 JDBC 驱动 程序)也使用本地内存 最大本地内存大小取决于以下因素: 操作系统进程内存大小限制 已经指定用于 Java 堆的内存 进程内存大小: 32位操作系统,理论最大值2的32次方=4G 进程内存 = Java 内存 + 本地内存 + 加载的可执行文件和库 + 操作系统保留内存 Java内存管理的基本概念 垃圾回收 (Garbage Collection, GC): JVM自动检测和释放不再使用的内存。 Java 运行时JVM会执行 GC,这样程序员不再需要显式 释放对象。 通常在空闲内存降低到某一水平或内存分配达到某一 数量后自动触发。 以下OutOfMemory 简称 OOM 以下Memory Leak 简称 ML Heap简称“堆” Java内存问题的两种表现形式 Java内存问题的两种表现形式: 内存不足错误 内存泄漏错误 内存不足错误--明确显示出java.lang.OutOfMemoryError 没有空闲内存可供 JVM 或本地代码用于分配新对象或内存块 在 Java 堆或本地内存中都可能发生 内存泄漏错误--没有错误信息,但是内存几乎耗尽 已经分配好的内存或对象,当不再需要,没有得到释放 内存曲线是一条斜向上的曲线 对 Java 堆或本地内存都可能产生这个问题 通常最终的状态就会导致 OOM 错误 通常内存泄漏ML会导致 OOM错误,因此两者的探查方法完全相同! Java内存问题的两个主要发生区段 Java内存问题的两个主要发生区段: Java内存--包括heap堆内存和permanent区 本地内存--包括JVM进程内存和java使用的第三方本地代码 Java内存不足 Java堆内存heap不足,无法再分配新对象或内存块 permanent区内存不足,无法再加载类到内存中(Sun Hp JDK) 本地内存不足 物理内存不够,无法再得到内存 第三方本地代码有内存泄漏的Bug,例如oracle oci driver本地代码 JVM的JIT或者JVM本身的Bug MENU Java内存管理的基本概念 内存不足和内存泄漏错误的原因和症状 使用分析工具解决内存不足和内存泄漏错误 预防内存不足和内存泄漏 OutOfMemory/Memory Leak错误实例 内存不足和内存泄漏错误的典型原因(1) 物理内存不足 物理内存有限,例如只有1G 物理内存很大,但是应用很多,占用太多内存 Swap区大小不够 Weblogic Server压力太大 并发用户太多 大数据量分配应用,例如统计报表 Permanent区太小 用户代码内存不释放 http session放置了大量对象 在内存分配大量数据 用户自己创建太多线程 调用AWT等画图接口 用户代码内存泄漏问题 jdbc连接没有close 分配好的对象没有close和释放 内存不足和内存泄漏错误的典型原因(2) Weblogic Server配置不当 给heap分配的内存太少 session timeout时间太长 EJB pool和Cache的太大 第三方Java应用的内存问题 第三方Java应用也存在内存不足或者泄漏问题 第三方本地代码的内存泄漏问题 第二类JDBC驱动的内存泄漏,例如Oracle Oci Driver 其他第三方本地代码的内存泄漏 JVM本身的内存问题 JIT技术需要消耗更多的本地内存 JVM本身的Bug,例如GC的Bug 在 Java 堆中发生的 OOM 的故障症状 如果 Java 堆发生 OOM/ML: Weblogic Server运行缓慢,响应速度很慢(JVM

文档评论(0)

80219pm + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档