开发者社区> 问答> 正文

关于Android内存管理问题

请教各位大神,我用的一个activity打开一个pdf,完了每次退出的时候我有清空而且提醒内存回收,但是每次内存都不回收,每次打开过一个activity就会消耗掉一些内存,打开几个之后就会内存溢出了,大神们给个建议啊?这个要怎么处理呢?

 FileInputStream in;
 if(uri.getPath() != null) {
 in = new FileInputStream(uri.getPath());
 } else {
 in = new FileInputStream(mPath);
 }
                    ByteArrayOutputStream f = new ByteArrayOutputStream();

                    byte[] buffer1 = new byte[1024];
                    int len1 = 0;
                    long total = 0;

                    while ((len1 = in.read(buffer1)) > 0) {

                        f.write(buffer1, 0, len1);//在这里报内存溢出
                    }

展开
收起
爵霸 2016-06-07 14:39:29 1790 0
1 条回答
写回答
取消 提交回答
  • 你内存溢出的时候是打开了多个activity,这些都还没被destroy吗?如果是这样,是很正常的。
    如果是打开一个之后,然后back把它销毁,再打开一个。这种情况下出现OOM,那么,你就要查下,是不是activity有什么耗时的后台线程起着,然后你back时还没结束,那么资源就会占用,直到这个线程结束。
    换句话说,你要看下那个activity有没有被不会马上结束的对象引用着。

    2019-07-17 19:30:07
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载