本文介绍如何查看Java OOM的崩溃率,以及如何通过Java OOM时上报的Hprof文件分析泄漏和大对象,最终帮助您优化Java OOM的问题。
查看Java崩溃率。
筛选条件 | 取值 |
---|---|
崩溃类型 | Java崩溃,Java启动崩溃 |
如图总体Java崩溃率为2.27‰
。
查看Java OOM崩溃率。
筛选条件 | 取值 |
---|---|
崩溃类型 | Java崩溃,Java启动崩溃 |
是否OOM | 是 |
如图总体Java OOM崩溃率为1.01‱
。有时,Java OOM问题严重的应用,Java OOM 甚至占据 Java崩溃的50%。
分析Java OOM的Hprof文件。
配置 OOM分析采样率。
在 SDK上报配置 页面,配置模块 内存优化 的指标 OOM分析采样率 为100%。
Java OOM时,平台会dump Hprof文件裁剪后上报。防止资源过量消费,APMPlus平台会限制一天上报的Hprof份数最多数百份。
过滤存在Hprof文件的Java OOM进行分析。
筛选条件 | 取值 |
---|---|
崩溃类型 | Java崩溃 |
是否OOM | 是 |
是否存在Hprof文件 | 是 |
如图有2次Java OOM崩溃上报了Hprof文件。
单击异常崩溃列表里的Java OOM崩溃,进入详情页面。
在Java OOM崩溃详情页,找到 Hprof文件 模块。
筛选条件 | 取值 |
---|---|
是否存在Hprof文件 | 是 |
单击 查看Hprof文件,进入单设备内存详情页面。
查看单设备内存详情的Hprof文件。
说明
单设备内存详情根据Device ID关联到Java OOM崩溃时的Hprof文件。注意筛选时间区间和崩溃时间对应。
Java OOM崩溃时上报的Hprof文件,通过APMPlus平台自动化解析分析出泄露和大对象。平台会对所有解析出的泄露和大对象进行聚合,帮助您发现高频问题、占据内存较大的问题。
聚合后的泄露和大对象在内存优化页面的泄露分析和大对象这两个模块。您可以优先优化解决Top泄露和大对象问题,进而优化Java OOM问题。
在泄露分析页面,查看所有泄露聚合后的泄露列表。
进入泄露详情页面,查看泄露堆栈。您可以根据堆栈解决泄露问题。
在大对象分析页面,查看所有大对象聚合后的列表。
您可以根据次数、平均大小、总大小进行排序。
进入大对象详情页面,查看大对象具体的引用链和持有对象。
您可以通过断掉引用链或者优化持有对象,优化大对象内存占用。
分析大对象持有对象,您可以优化大对象的持有对象来优化内存。
如果发现几十或者上百M的大对象,优化后会极大的优化Java OOM崩溃问题。