当前位置:   article > 正文

【Android】【内存】java.lang.OutOfMemoryError 问题分析_android caused by: java.lang.outofmemoryerror

android caused by: java.lang.outofmemoryerror

一、前言

项目中含有 rar 压缩包解压功能,使用的是 junrar,在解压一文件时(70多M,文件不大,但1000多张gif,最大者1M,见邮件),出现 java.lang.OutOfMemoryError


二、hprof文件获取

使用Eclispse ,Eng 手机

1. DDMS Devices 视图中 选中进程,点击 Update Heap,Heap 视图中 点击 Cause GC

2. 解压rar文件,观察 Heap Size 及 Allocated 数据变化

3. 内存异常时,点击 Dump HPROF File,生成内存快照,用于内存分析(oom时,Eclipse自动抓起hprof文件并打开)


三、问题分析

使用工具 MAT 分析,也可使用Eclipse MAT插件

工具下载地址:Memory Analyzer 


1. Overview

可见有一处58.9M的内存使用



2. 查看Histogram

按Retained Heap排序,发现byte[] 共80M左右

右键选择 List objects -> with incomming , 结果如图3



3. 在占用最大的 byte处,右键选择 Merge Shortest Paths to GC Roots, 结果如图4



4. 依次展开,发现引用顺序,成员mem 占用 56M左右,

去review 代码,然后判断占用是否正常





注:

junrar 依赖如下

1.  Apache Commons VFS 

下载地址:commons-vfs-2.1.tar.gz

2. Apache Commons Logging

下载地址:commons-logging-1.2-bin.tar.gz



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/443746
推荐阅读
相关标签
  

闽ICP备14008679号