博客
关于我
java.lang.OutOfMemoryError内存溢出定位
阅读量:649 次
发布时间:2019-03-15

本文共 1033 字,大约阅读时间需要 3 分钟。

OM 内存溢出定位

在处理 Java 运行时内存溢出问题时,以下是一些实用的定位方法和技巧。以下内容经过优化,旨在帮助开发者快速定位并解决内存溢出问题。

  • 增加异常时记日志参数
  • 在 JVM 内存溢出时,启用记日志功能可以帮助快速定位问题。

    • -XX:+HeapDumpOnOutOfMemoryError:启用内存溢出时的堆转储功能。此参数会在内存溢出发生时,将堆转储存入指定路径下的文件,文件名格式为 java_pid%p.hprof,其中 %p 为进程号。

    • -XX:HeapDumpPath=/tmp/dump:指定堆转储文件的保存路径。

    1. GC 分析
    2. 分析垃圾回收器的行为和性能,找出内存溢出问题的根本原因。

      • 查看 JVM 设置

        • 使用命令jps -v | grep pid 查找目标进程 ID(pid)。

        • 查看 JVM 配置jinfo pid

      • 垃圾回收器类型

        举例如:查看某进程使用的垃圾回收器类型,执行命令 java -Xlog:gc*log:file=gc.log

      • GC 原因分析

        为了分析垃圾回收器的GC原因,可执行以下命令查看原因文件:

        jstat -gccause pid
      • GC 次数和时间统计

        查看 garbage collection 的详细统计信息,包括 GC 次数、总时间等:

        jstat -gcutil pid
      • 内存使用情况

        查看各代内存的使用和占用量:

        jstat -gccapacity pid

        该命令输出的内容可帮助分析新生代(Young Generation)、旧生代(Old Generation)以及持久代(Permanent Generation)的内存使用情况。单位为 KB。

      1. 查看内存最多的对象
      2. 通过导出堆转储文件,使用工具分析内存泄漏问题。

        • 导出堆转储文件

          集中指定路径下的临时文件,执行以下命令:

          jmap -dump:format=b,file=dump pid

          其中 pid 是目标进程的 PID(可以通过 jps 查询)。

        • 分析转储文件

          使用 MAT 工具或 Eclipse 的内存分析工具来解析生成的堆转储文件。

        • 查看堆栈文件

          如果需要深入查看转储文件中的具体问题,可以使用 jhat 工具:

          jhat dumpfile

          注意:jhat 工具会以 HTTP 7000 端口提供 Web 界面,方便查看转储文件中的堆栈信息。

        通过以上方法,可以有效定位内存溢出问题,快速找到内存泄漏的根本原因。

    转载地址:http://pncmz.baihongyu.com/

    你可能感兴趣的文章
    搭建Vue项目步骤
    查看>>
    账号转账演示事务
    查看>>
    idea创建工程时错误提醒的是architectCatalog=internal
    查看>>
    SpringBoot找不到@EnableRety注解
    查看>>
    简易计算器案例
    查看>>
    在Vue中使用样式——使用内联样式
    查看>>
    Find Familiar Service Features in Lightning Experience
    查看>>
    Explore Optimization
    查看>>
    连接Oracle数据库经常报错?关于listener.ora和tnsnames.ora文件的配置
    查看>>
    解决数据库报ORA-02289:序列不存在错误
    查看>>
    map[]和map.at()取值之间的区别
    查看>>
    【SQLI-Lab】靶场搭建
    查看>>
    【Bootstrap5】精细学习记录
    查看>>
    Struts2-从值栈获取list集合数据(三种方式)
    查看>>
    参考图像
    查看>>
    *.json: [“usingComponents“][“van-button“] 未找到
    查看>>
    设计模式(18)——中介者模式
    查看>>
    error LNK2019:无法解析的外部符号_imp_CryptAcquireContextA@20
    查看>>
    推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
    查看>>
    【专题3:电子工程师 之 上位机】 之 【46.QT音频接口】
    查看>>