zoukankan      html  css  js  c++  java
  • Java虚拟机六 堆溢出的处理

        在Java程序中,如果堆空间不足,有可能抛出内存溢出错误:Out Of Memory,简称OOM。

    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at com.stylefeng.guns.rest.NewSizeDemo.main(NewSizeDemo.java:10)

        一旦发生这种问题,系统就会被迫退出。

        Java虚拟机提供了参数 -XX:+HeapDumpOnOutOfMemoryError ,使用该参数可以在内存溢出时导出整个堆信息。可以使用参数 -XX:HeapDumpPath,指定导出堆的存放路径。

         使用如下命令将当前的堆导出,并保存到D:/a.dump文件下,使用MAT工具打开该文件进行分析。 

    -Xmx20m -Xms20m -Xmn7m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump

         除了在发生OOM时可以导出堆信息外,虚拟机还允许在发生错误时执行一个脚本文件,用于奔溃程序的自救、报警或通知。

         准备printstack.bat脚本如下:

    D:/tools/jdk/bin/jstack -F %1 > D:/a.txt

         以上脚本会导出给定Java虚拟机进程的线程信息,保存到a.txt文件中。

  • 相关阅读:
    第三周学习进度条
    绘制echarts折线图
    第二周学习进度条
    返回一个整数数组中最大子数组的和
    软件工程第二周开课博客
    第一周学习进度条
    学习进度
    学习进度
    学习进度
    HDU 4906 (dp胡乱搞)
  • 原文地址:https://www.cnblogs.com/taiguyiba/p/9767696.html
Copyright © 2011-2022 走看看