• 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文件中。

  • 相关阅读:
    Mybatis分页插件
    Mybatis代码自动生成
    Spring-Mybatis依赖
    Spring-test单元测试
    Spring-json依赖
    Spring-MVC依赖
    Log4j日志依赖
    Spring数据库连接池依赖
    Spring-JDBC依赖
    Spring依赖
  • 原文地址:https://www.cnblogs.com/taiguyiba/p/9767696.html
Copyright © 2020-2023  润新知