android LOG 中提示Out of memory !!!!! 补充一点,每次报错的时候都是打开Activity的时候 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 基本上我的所有图片都是在XML中很少动态的去修改,图片也很小的,一般都不超过几十K 你应该又几百k的图片被加载了吧?android设计规范种也有说到不建议讲图片设计的过大,对于背景图片建议使用.9格式化,不知道是否可以帮到你。 我的背景图片比较大一点有100多K其它的也就几K,十几K,可能整个界面加起来有200-300多K吧,就这么点图片,基本上所有的图片都是在XML中设定好了,JAVA不是有自动的垃圾回收么,每一次销毁Activity的时候我都还调用了System.gc()垃圾回收一下的 你是使用bitmap么?这个要手动释放资System.gc();只能释放Java部分的,bitmap要调用recycle()释放资源。 基本上我都没有用bitmap,有背景的地方都是在XML设置好了,动态修改控件背景的很少,都是调用ImageView的setBackgroundResource,直接设定背景图片 其实有时候真的没必要把很大分辨率的图片按照32位解码来作为背景图啥的,可以根据屏幕大小 压缩解码,另外可以解码成RGB565,这样可以减少很多内存,而基本没影响显示效果。 System.gc() 只是对系统提出一个建议,虚拟机在没有耗尽内存的情况下是可能不会调用它的。 毕竟调用一次也是有性能消耗的。 其实调用了gc() 也不是说系统会立刻清理内存的,只是你给它安排了一个任务,啥时候执行就看系统自己的调度了。但是不建议频繁调用这个gc接口。基本没什么用 其实调用了gc() 也不是说系统会立刻清理内存的,只是你给它安排了一个任务,啥时候执行就看系统自己的调度了。但是不建议频繁调用这个gc接口。基本没什么用是,楼主也真有耐心,反复开启关闭半个小时。 楼主的 更新图形的 线程 在关闭的时候作了什么处理呢?是不是每次打开Activity都新开一个线程,就是说 半个小时过去了 你的程序里新开了很多个线程在同时执行。 我的线程其实做的更新ImageView中的图片很少了,线程关闭是的时候肯定就没有再有更新了,还有就是每一次关闭Activity的时候我的线程都是退出了的,所以说同时开了很多线程执行是不存在的,不过后续我会多测试看看,因为我的Activity中还有一个视频播放器在播放视频,我看看是不是这里的影响,没有办法有这个业务逻辑, 我就必须这样去测试,谢谢指点 坚强的小小名字好喜感呀,看到小小就想起了DOTA里面的小小 我的线程其实做的更新ImageView中的图片很少了,线程关闭是的时候肯定就没有再有更新了,还有就是每一次关闭Activity的时候我的线程都是退出了的,所以说同时开了很多线程执行是不存在的,不过后续我会多测试看看,因为我的Activity中还有一个视频播放器在播放视频,我看看是不是这里的影响,没有办法有这个业务逻辑, 我就必须这样去测试,谢谢指点all right. 其实调用了gc() 也不是说系统会立刻清理内存的,只是你给它安排了一个任务,啥时候执行就看系统自己的调度了。但是不建议频繁调用这个gc接口。基本没什么用贴一下自己在DDMS中测试的数据第一张是在频繁切图的时候的数据,当Free只有2M的时候再继续关闭Activity,然后再打开Activity的时候就容易报OOM错误,如果Free只有2M左右暂停关闭再打开的动作,一直等待几分钟。那么DDMS中的FREE就有明显的变化,增多了,如第二张图所示,%USED也会减少,有点不明白的时候data object一直都没有减少,最开始只有50,000左右,一直涨到途中所示,没有明显的下降 我的线程其实做的更新ImageView中的图片很少了,线程关闭是的时候肯定就没有再有更新了,还有就是每一次关闭Activity的时候我的线程都是退出了的,所以说同时开了很多线程执行是不存在的,不过后续我会多测试看看,因为我的Activity中还有一个视频播放器在播放视频,我看看是不是这里的影响,没有办法有这个业务逻辑, 我就必须这样去测试,谢谢指点all right. 坚强的小小名字好喜感呀,看到小小就想起了DOTA里面的小小嘿嘿,同道中人呐~ 有没有可能存在对bitmap的静态(static)类型的引用? 有没有可能存在对bitmap的静态(static)类型的引用?这样可能导致gc机制不能及时释放内存 我的线程其实做的更新ImageView中的图片很少了,线程关闭是的时候肯定就没有再有更新了,还有就是每一次关闭Activity的时候我的线程都是退出了的,所以说同时开了很多线程执行是不存在的,不过后续我会多测试看看,因为我的Activity中还有一个视频播放器在播放视频,我看看是不是这里的影响,没有办法有这个业务逻辑, 我就必须这样去测试,谢谢指点all right.贴一下自己在DDMS中测试的数据第一张是在频繁切图的时候的数据,当Free只有2M的时候再继续关闭Activity,然后再打开Activity的时候就容易报OOM错误,如果Free只有2M左右暂停关闭再打开的动作,一直等待几分钟。那么DDMS中的FREE就有明显的变化,增多了,如第二张图所示,%USED也会减少,有点不明白的时候data object一直都没有减少,最开始只有50,000左右,一直涨到途中所示,没有明显的下降,贴图已经回了阁下了 有没有可能存在对bitmap的静态(static)类型的引用?静态类型的引用?没有,我的所有图片资源都没有声明是静态类型的,还有就是XML文件中android:background="@drawable/ipad_xxxx_bg"这样直接设定控件背景算不算? 贴一张出现OOM的时候DUMP出的文件,用MAT分析的按照1.点击文件上面的Histogram会打开一个视图.2.在class name那一栏最底部, 会有一行Total**** 然后右击选项ExpandAll.3. 点击Shadow Heap排序, 最顶层的就是泄露最多的地方.4.右击某个calss选择ListObjects->incoming reference.5.然后就可以看到在哪些地方有些路, 逐个排查对应的代码.此方法排上面的就是最有可能泄露的地方到了这一步就不知道怎么查看了右键选择java.lang.String ListObjects->incoming reference如下所示完全不知道怎么查看,跟自己的程序联系起来了 有没有可能存在对bitmap的静态(static)类型的引用?静态类型的引用?没有,我的所有图片资源都没有声明是静态类型的,还有就是XML文件中android:background="@drawable/ipad_xxxx_bg"这样直接设定控件背景算不算?这个不算静态引用 有没有可能存在对bitmap的静态(static)类型的引用?静态类型的引用?没有,我的所有图片资源都没有声明是静态类型的,还有就是XML文件中android:background="@drawable/ipad_xxxx_bg"这样直接设定控件背景算不算?这个不算静态引用有没有可能存在对bitmap的静态(static)类型的引用?静态类型的引用?没有,我的所有图片资源都没有声明是静态类型的,还有就是XML文件中android:background="@drawable/ipad_xxxx_bg"这样直接设定控件背景算不算?这个不算静态引用用过MAT来分析没有,我用了,但是看不太明白,上面有我的切图,麻烦看看 其他问题不知道。但是 System.gc() 这个是通知系统回收,但是并不是立即回收。 怎么解析韩文歌词啊? android串口通信 接收数据问题 【Android GPS & 基站定位需考虑的因素】 ui设计的问题 STL string 问题; Android 图片轮播,图片左右自动滚动与页面侧滑菜单冲突,请问怎么解决? 在网上找了一个android蓝牙通信的例子程序,想利用例子与其他蓝牙设备进行串口同喜,程序能正常运行且搜索到周围设配,但不能配对和连接,请高手帮我看下 hello-jni问题 android编程问题:通过HttpURLConnection下载文本 关于密码管理器项目 在面对庞大的代码时。。。。 Android直播app用什么技术可以做到延迟小一些?
我的背景图片比较大一点有100多K其它的也就几K,十几K,可能整个界面加起来有200-300多K吧,就这么点图片,基本上所有的图片都是在XML中设定好了,JAVA不是有自动的垃圾回收么,每一次销毁Activity的时候我都还调用了System.gc()垃圾回收一下的
其实调用了gc() 也不是说系统会立刻清理内存的,只是你给它安排了一个任务,啥时候执行就看系统自己的调度了。
但是不建议频繁调用这个gc接口。基本没什么用
其实调用了gc() 也不是说系统会立刻清理内存的,只是你给它安排了一个任务,啥时候执行就看系统自己的调度了。
但是不建议频繁调用这个gc接口。基本没什么用是,楼主也真有耐心,反复开启关闭半个小时。
其实调用了gc() 也不是说系统会立刻清理内存的,只是你给它安排了一个任务,啥时候执行就看系统自己的调度了。
但是不建议频繁调用这个gc接口。基本没什么用贴一下自己在DDMS中测试的数据第一张是在频繁切图的时候的数据,当Free只有2M的时候再继续关闭Activity,然后再打开Activity的时候就容易报OOM错误,如果Free只有2M左右暂停关闭再打开的动作,一直等待几分钟。那么DDMS中的FREE就有明显的变化,增多了,如第二张图所示,%USED也会减少,有点不明白的时候data object一直都没有减少,最开始只有50,000左右,一直涨到途中所示,没有明显的下降
有没有可能存在对bitmap的静态(static)类型的引用?
有没有可能存在对bitmap的静态(static)类型的引用?
这样可能导致gc机制不能及时释放内存
有没有可能存在对bitmap的静态(static)类型的引用?
静态类型的引用?没有,我的所有图片资源都没有声明是静态类型的,还有就是XML文件中android:background="@drawable/ipad_xxxx_bg"
这样直接设定控件背景算不算?
按照
1.点击文件上面的Histogram会打开一个视图.2.在class name那一栏最底部, 会有一行Total**** 然后右击选项ExpandAll.3. 点击Shadow Heap排序, 最顶层的就是泄露最多的地方.4.右击某个calss选择ListObjects->incoming reference.5.然后就可以看到在哪些地方有些路, 逐个排查对应的代码.此方法排上面的就是最有可能泄露的地方
到了这一步就不知道怎么查看了
右键选择java.lang.String ListObjects->incoming reference
如下所示完全不知道怎么查看,跟自己的程序联系起来了
有没有可能存在对bitmap的静态(static)类型的引用?
静态类型的引用?没有,我的所有图片资源都没有声明是静态类型的,还有就是XML文件中android:background="@drawable/ipad_xxxx_bg"
这样直接设定控件背景算不算?这个不算静态引用
有没有可能存在对bitmap的静态(static)类型的引用?
静态类型的引用?没有,我的所有图片资源都没有声明是静态类型的,还有就是XML文件中android:background="@drawable/ipad_xxxx_bg"
这样直接设定控件背景算不算?这个不算静态引用
有没有可能存在对bitmap的静态(static)类型的引用?
静态类型的引用?没有,我的所有图片资源都没有声明是静态类型的,还有就是XML文件中android:background="@drawable/ipad_xxxx_bg"
这样直接设定控件背景算不算?这个不算静态引用用过MAT来分析没有,我用了,但是看不太明白,上面有我的切图,麻烦看看
但是 System.gc() 这个是通知系统回收,但是并不是立即回收。