首页 新闻 会员 周边

android 运行异常

0
悬赏园豆:10 [已解决问题] 解决于 2016-07-12 15:33

总是提示这个Grow heap (frag case) to 24.245MB for 698336-byte allocation

运行时间长容易出现内存溢出的问题,求大神给解决一下

没错就是那个小新的主页 没错就是那个小新 | 初学一级 | 园豆:184
提问于:2016-06-12 16:10
< >
分享
最佳答案
0

1、 这里Grow heap (frag case) to 24.245MB for 698336-byte allocation表示你一直在分配一个较大的对象,占用的堆内存达到了24.245MB;

2. 为什么会出现这样的问题,是因为分配了一个byte[]数组,需要以Blob方式写入SQLite数据库,而造成的这么大的单个对象出现,这 里Android开发提醒你,这是很危险的操作,对于不同固件和低RAM配置的设备随时都有OOM的危险,如果你真的需要往SQLite存储二进制, 这里可以采用分段的方式,将某个对象拆分为1MB或更小,分更多的段来存放,中间加一层拆分数据缓存层来解决比较好;

3. 同时每次构造单个较大对象前,可以通知gc准备收集,比如在执行需要耗操作前执行System.gc(); 防止OutOfMemoryError的发生。

收获园豆:10
宇诺 | 菜鸟二级 |园豆:233 | 2016-06-13 13:39
其他回答(1)
0

原因有很多种,把错误的log加上

大黑 | 园豆:218 (菜鸟二级) | 2016-06-13 10:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册