【Android】【内存】java.lang.OutOfMemoryError 问题分析
来源:互联网 发布:win7添加打印机usb端口 编辑:程序博客网 时间:2024/06/05 10:17
一、前言
项目中含有 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 分析
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
0 0
- 【Android】【内存】java.lang.OutOfMemoryError 问题分析
- 内存溢出问题(java.lang.OutOfMemoryError)
- 解决内存溢出问题:java.lang.OutOfMemoryError
- android 内存溢出 Java.lang.OutOfMemoryError
- Android 图片内存溢出java.lang.OutOfMemoryError:
- android内存溢出 java.lang.OutOfMemoryError
- 分析java.lang.OutOfMemoryError
- java.lang.outofmemoryError问题
- java.lang.OutOfMemoryError问题
- [Android]java.lang.OutOfMemoryError
- Java 内存溢出(java.lang.OutOfMemoryError)问题总结
- java异常 java.lang.OutOfMemoryError内存溢出问题
- 内存溢出问题java.lang.OutOfMemoryError: PermGen space
- myeclipse解决内存溢出问题 java.lang.OutOfMemoryError: PermGen space
- tomcat内存溢出问题:java.lang.OutOfMemoryError: PermGen space
- Tomcat内存溢出的问题:java.lang.OutOfMemoryError: PermGen space
- tomcat内存溢出问题(java.lang.OutOfMemoryError: PermGen space)
- 编译android遇到java虚拟机堆内存不够的问题 java.lang.OutOfMemoryError: GC overhead limit exceeded 解决方法
- 单据自动转换并审核的方法示例
- Cocos Creator 模块化脚本(摘自官方文档)
- 常用正则表达式
- sed提取模式内容
- 压缩感知稀疏基之离散余弦变换(DCT)和离散正弦变换(DST)
- 【Android】【内存】java.lang.OutOfMemoryError 问题分析
- python学习之一:python安装
- 将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹
- 一位ACM大牛的心得
- 2016银行卡BIN
- Android自定义上拉加载下拉刷新PullToRefreshListView
- poj 3304 Segments 线段与直线相交
- 频带利用率
- Cocos Creator 插件脚本(摘自官方文档)