helinfengg 2015-09-14 03:38 采纳率: 50%
浏览 1567
已采纳

关于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);//在这里报内存溢出
                    }
  • 写回答

4条回答 默认 最新

  • 盼汕 2015-09-14 04:11
    关注

    你内存溢出的时候是打开了多个activity,这些都还没被destroy吗?如果是这样,是很正常的。
    如果是打开一个之后,然后back把它销毁,再打开一个。这种情况下出现OOM,那么,你就要查下,是不是activity有什么耗时的后台线程起着,然后你back时还没结束,那么资源就会占用,直到这个线程结束。
    换句话说,你要看下那个activity有没有被不会马上结束的对象引用着。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记