好问题
非Bitmap图片过大过多导致的内存泄漏 的解决方案征集
非Bitmap图片过大过多导致的内存泄漏 的解决方案征集
解决方案 »
- 安卓程序出现问题,求大神解答!代码如下!
- 很奇怪的现象,求解!!
- SurfaceView的显示问题: 不同的加入方式会影响其的显示吗
- Android系统自动同步时间的问题
- 各位好,请问有哪位知道如何在android平台下对PDF文件进行编辑操作吗,比如,插入图片,添加文字,更改里面内容等等,我知道JAVA中可以用PDFBOX,里面
- 懂webservice httpservice的,来来来,大伙说说,散分了!!!
- [求教]Android GridLayout如何平均分配子View宽度
- android Bitmap旋转问题
- retrofit2每次请求都需要new Retrofit.Builder();吗?
- 求助,大佬们,我使用github下载的代码报错了,麻烦帮忙看下,谢谢
- Android连接WebService失败,帮我看看是什么原因
- 在android项目中怎么使用第三方用ndk实现的库
错误是:
dalvikvm.3775488-byte external allocation too large for this process
Graphics VM won't let us allocate 3775488 bytes我移走了几个大的图片,勉强可以运行,但是实际中这种情况是不行的啊
写一个全局的资源管理类,用Map和软引用来保存这些图片资源,而不是直接引用资源文件
不过说实话,我没有理解,你们谁明白,说下
最后的解决办法是把美工压缩图片质量,而且不能用JPG的因为JPG本身就是压缩格式,用的时候会解码出来。
还有就是,直接引用的时候,其实也是后台通过bitmap解码来的我水平有限,粗略猜测那位神人说的意思,就是不要直接写R.drawable.xxx这样的引用,直接写一个类,通过bitmap加载,然后自己管理资源的读取和释放。再给程序“引用”。但是我们上次这样试过,图片资源足够大的时候,这里是说单个图片过大,或者同时存在的图片过多,还是会出现这个问题,仍然解决不能
所谓的垃圾回收,和WC差不多,本来上完厕所顺手一冲就行了,自动回收呢,好处就是不用你自己冲了,有专家帮你照看着。其实本来是有道理的,在中国,大型公众场所厕所都比较脏,没人打扫真不行。但是如果每家都安排一个专职帮你冲厕所的,Java之父财大气粗,也不怕烦,每隔几秒问他一次:上完厕所没有,他喜欢这样。但是手机不喜欢,你丫的烦不烦,什么破马桶,我泄给你看看。
建议lz看一下Android SDK文档resources\articles\avoiding-memory-leaks.html有时OOM不一定就是内存泄露,而可能是图片过大,在解码的时候,需要进行下采样。
一张图片3.7M,lz用的是多大的图片啊
不要用R。drawable,用Bitmap。
解码必须经过下采样,并将颜色空间设为RGB565。用完后必须及时recycle。有人说的Soft/Weak Reference有一定效果,但是这个是系统控制的,没有自己控制什么时候释放好。