赞
踩
一、前言
项目中含有 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
2. Apache Commons Logging
下载地址:commons-logging-1.2-bin.tar.gz
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。