zoukankan      html  css  js  c++  java
  • oom 和 jvm crash的问题

    很多次生产环境jvm进程无故消失的时候都留下了hs_err[pid].log文件  然后通过mat分析大多数情况是oom导致的  所以以前一直认为OOM一定会导致jvm crash  也就是说java进程直接退出

    最近想了解下hs_err的错误日志,然后就自己写了段oom的代码,如下:

    Map<Integer, Builder> testMap = new HashMap<Integer, Builder>();
    while(true){
         //a builder object has 50M bytes
         testMap.put(i, new Builder());
         i++;
    }

    设置jvm参数 -Xms 256M -Xmx 256M,运行之后确实出现了OOM 但是到处找hs_err的log文件 怎么也找不到 于是怀疑jvm参数配置有问题。了解后发现关于hs_err的参数,只需要通过-XX:ErrorFile来自定义路径即可,如果没有该配置也不会影响日志的生成,所以没生成日志不是jvm配置的问题,也就是说,jvm没有直接crash。

    给上段代码套上try catch 来捕获OutOfMemoryError  发现只是抛出了一个异常,下边的代码还是可以跑的。所以,此次OOM并没有导致jvm crash  而是抛出了oom之后没有catch,jvm退出了,所以没有留下hs_err日志

  • 相关阅读:
    GDB的Breakpoint, Watchpoint和Catchpoint
    sed初学
    比较两个文本不同的行/比较两个文本相同的行
    sprintf()函数基本用法
    vim不用鼠标复制粘贴
    SQL基础-语法
    SQL基础-简介
    XPath学习笔记
    jQuery选择器
    Ubuntu常用命令
  • 原文地址:https://www.cnblogs.com/hithlb/p/4280272.html
Copyright © 2011-2022 走看看