社区
Android
帖子详情
如何查看android 用于bitmap的内存大小
elfylin
2011-07-17 09:34:09
android手机经常报out of memory错误。
我知道每一个进程有一个用于bitmap解析的内存限制,如果解析的bitmap超过这个大小就会报错。
我们如何知道这个内存值是多少,以及使用过程中剩余多少?
我知道程序内部可能出现了bitmap内存泄露,所以我想通过这个办法来跟进一下,bitmap的内存是在什么地方被消耗了。
...全文
1899
14
打赏
收藏
如何查看android 用于bitmap的内存大小
android手机经常报out of memory错误。 我知道每一个进程有一个用于bitmap解析的内存限制,如果解析的bitmap超过这个大小就会报错。 我们如何知道这个内存值是多少,以及使用过程中剩余多少? 我知道程序内部可能出现了bitmap内存泄露,所以我想通过这个办法来跟进一下,bitmap的内存是在什么地方被消耗了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jdpxiaoming
2011-11-04
打赏
举报
回复
我找到了一个方法 楼主 可以试一下
long allocNativeHeap = Debug.getNativeHeapAllocatedSize()/1024;
jdpxiaoming
2011-11-03
打赏
举报
回复
你们的回答 其实 跟楼主问的 完全 没关系 ,bitmapFactory 单独的 内存如何查看呢?
jdpxiaoming
2011-11-03
打赏
举报
回复
我终于 遇到了 和楼主一样的 问题 感谢 所有 出来分享的人
haoyizsw
2011-07-21
打赏
举报
回复
DDMS跟一下吧
lyltiger
2011-07-21
打赏
举报
回复
用 Options 解决这个问题
http://www.qianxk.com/forum.php
fontlose
2011-07-18
打赏
举报
回复
你可以修改这个大小的,root之后修改/system/build.prop这个文件的dalvik.vm.heapsize
fontlose
2011-07-18
打赏
举报
回复
这个ms关系不大,cat /proc/pid/status 可以看到VM size 单位是KB,是该进程的虚拟内存大小。
你应用不能超过16M大小 超过了就报错了
念茜
2011-07-18
打赏
举报
回复
totalMemory()表示调用时刻,java虚拟机现在已经从操作系统那里获取来的内存大小。在java程序运行的过程的,内存总是慢慢的从操作系统那里取的,基本上是用多少取多少。 但是java虚拟机100%的情况下是会稍微多取一点的。
嗯。android Runtime类中有freememory() 、totalmemory()、和maxmemory()等方法可以打印出信息VM内存使用量。
fontlose
2011-07-18
打赏
举报
回复
[Quote=引用 7 楼 elfylin 的回复:]
android 一个进程就虚拟机吧
VM虚拟内存大小和进程占有内存大小不一样吗
[/Quote]
VM size 是分配给虚拟机的虚拟内存空间,这个值只要比maxMemory大些就可以了
elfylin
2011-07-18
打赏
举报
回复
android 一个进程就虚拟机吧
VM虚拟内存大小和进程占有内存大小不一样吗
elfylin
2011-07-17
打赏
举报
回复
[Quote=引用 1 楼 fontlose 的回复:]
Runtime.getRuntime().maxMemory() ; 进程可用总的内存大小
Runtime.getRuntime().totalMemory() ; 进程已用的内存大小
totalMemory超过maxMemory时就会包报out of memory错误。
可以手动new byte[1024*1024*1];申请1M内存,再打印看看这两个值。
[/Quote]
我打印了一下maxMemory=16777216,totalMemory=3153888
但是我用ddms的进程查看器,VM size 为138852,这个和totalMemory之间是怎么一样关系?
qiying1988
2011-07-17
打赏
举报
回复
检查 Bitmap.recycle()的地方有没有异常。
qiying1988
2011-07-17
打赏
举报
回复
用DDMS的内存监测工具Heap 试试。
fontlose
2011-07-17
打赏
举报
回复
Runtime.getRuntime().maxMemory() ; 进程可用总的内存大小
Runtime.getRuntime().totalMemory() ; 进程已用的内存大小
totalMemory超过maxMemory时就会包报out of memory错误。
可以手动new byte[1024*1024*1];申请1M内存,再打印看看这两个值。
android
获取
Bitmap
位图所占用的
内存大小
今天在看Universal-Image-Loader源码的时候,在对图片的超过用户在所设的阈值的时候,系统会调用GC将LinkHashMap比较靠底层的图片引用去掉,这里涉及到一个技术单个图片的文图大小的方法: private int sizeOf(String key,
Bitmap
value) { return value.getR...
Android
8.1
Bitmap
对象的内存分配解析
在
Android
3.0以下版本的系统中,
Bitmap
对象的内存都是在native层分配的,它不会占用Java堆内存的空间。
Android
3.0之后,
Bitmap
内存的分配统一交给了Java堆进行分配,方便了内存的管理。而
Android
8.0(
Android
O)之后的版本中,
Bitmap
内存分配又回到了native层,它是在native堆空间进行分配的。 我们接下来分析下
Android
8.1上的......
Android
—
Bitmap
图片大小计算、压缩与三级缓存
Bitmap
对象占用
内存大小
:
bitmap
.getByteCount() 图片所占
内存大小
计算方式:图片长度 x 图片宽度 x 一个像素点占用的字节数。
Android
Bitmap
使用的三种颜色格式: ALPHA_8–每个像素占1个字节,存储透明度信息,没有颜色信息。 RGB_565–每个像素占2个字节存储颜色信息,R 5位,G 6位,B 5位,能表示2^16种颜色。 ARGB_8888–每个像素占4个字节存储颜色信息,A R G B各一个字节,能表示2^24种颜色,还有一个字节存储透明度信息.
Android
Bitmap
内存模型、属性、压缩、优化
Bitmap
,即位图。它本质上就是一张图片的内容在内存中的表达形式。那么,
Bitmap
是通过什么方式表示一张图片的内容呢?
Bitmap
原理:从纯数学的角度,任何一个面都由无数个点组成。但是对于图片而言,我们没必要用无数个点来表示这个图片,毕竟单独一个微小的点人类肉眼是看不清的。换句话说,由于人类肉眼的能力有限,我们只需要将一张图片表示为 有限但足够多的点即可。点的数量不能无限,因为无限的点信息量太大无法存储;但是点的数量也必须足够多,否则视觉上无法形成连贯性。这里的点就是像素。
Android
Bitmap
防止内存溢出
以
Android
4.4之后为例,先通过设置 options.inJustDecodeBounds为true来查询需加载的
bitmap
宽高,然后判断reuse
Bitmap
是否符合重用,若符合则将其赋值给options.in
Bitmap
属性,最终得到想要的
bitmap
,即重用了reuse
Bitmap
的内存空间。三者的流重新解码成
bitmap
,可见
bitmap
所占
内存大小
并未发生变化。2)ARGB_4444(已废弃) :表示16位ARGB位图,即A占4位,R占4位,G占4位,B占4位,共占用2个字节。
Android
80,351
社区成员
91,288
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章