网站大量收购独家精品文档,联系QQ:2885784924

javaOutofMemory诊断分析.pptVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Copyright ? 2011?AMAX Global Services. Proprietary and Confidential Information. All Rights Reserved MR Customer Case Sharing-- Diagnosis of OOM Roy 2011/7/21 Content 2 可能出现的OOM Exception 3 Java 垃圾回收机制 1 分析工具 4 实战演练 5 QA 分析工具 分析工具 1)动态分析工具 Jprofiler 具体Jprofiler在我们的FTPC的配置,可以参考我在sharing上的一篇分享文章 http://bu2-devdb01:4132/Lessons%20Learned/Jprofiler监控FTPC%20SA的内存配置.aspx 分析工具 2)静态分析工具 a: 在启动java的时候加上参数 -XX:+HeapDumpOnOutOfMemoryError,这样如果由于OOM导致JVM crash的时候可以便于我们分析,生成的heap dump文件名字的命名规范如下, java_pidxxxx.hprof b: 工具介绍 eclipsemat IBM heap ana:我们MR比较喜欢用这个IBM的工具进行OOM诊断,启动方式 java -Xmx1600 -jar ha396.jar,然后选择文件打开生成的heap dump. Content 2 可能出现的OOM Exception 3 Java 垃圾回收机制 1 分析工具 4 实战演练 5 QA 可能出现的OOM Exception Java 内存机制 和可能出现的OOM Exception a PermGen space:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域(包括常量池) Exception in thread main java.lang.OutOfMemoryError: PermGen space public static void main(String[] args) { //使用List保持着常量池引用,压制Full GC回收常量池行为 ListString list = new ArrayListString(); // 10M的PermSize在integer范围内足够产生OOM了 int i = 0; while (true) { list.add(String.valueOf(i++).intern()); } } 可能出现的OOM Exception b java.lang.OutOfMemoryError: Java heap space,运行中产生的对象,被缓存的实例(Cache)对象,大的map, list引用大的对象等等,都会保存于此(Heap) public static void main(String[] args) { ListString list = new ArrayListString(); int i = 0; while (true) { list.add(new String(“test”)); } } 可能出现的OOM Exception c Exception in thread main java.lang.StackOverflowError 栈帧太多,也就是函数调用层级过多导致。检查是否有死递归的情况~ /** * VM Args:-Xss128k */ public class JavaVMStackSOF { private int stackLength = 1; public void stackLeak() { stackLength++; stackLeak(); } public static void main(String[] args) throws Throwable { JavaVMStackSOF oom = new JavaVMStackSOF(); try {

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档