android 内存溢出问题


    在做一个项目的时候,由于需要时时查询文件夹和时时检测是否有文件并上传,所以碰到一些内存溢出问题。

    做APP经常碰到这个情况,我一步步跳页面,点击返回还能返回到上一个界面,也就是在跳转前此页面没有finish掉。但是还想在所以流程全操作完后finish掉上面所有的界面。

简单来说,我想在一个activity中关闭掉以前的activity。一个方法是创建一个activity的队列,打开一个activity就将此activity放到此队列中,想finish的时候就从队列里取出finish掉。这个针对界面很多的时候。还有一个是在上一个activity中声明一个全局变量,在Create的时候将此activity父个他。

                                  public static Activity  myActivity;

              ……………………………………

                                   myActivity = this;

     然后在想关闭此Activity的地方调用此全局变量,finish 掉。但是会碰到内存溢出问题,所以在finish掉再释放掉此静态变量,否则即使 myActivity 已经关闭那么这个静态变量依然存在,我是把它 置为 null,成为null之后虽然还会占用内存,但是,一般而言,为Null的对象都会被作为垃圾处理,所以将不用的对象显式地设为Null,有利于GC收集器判定垃圾,从而提高了GC的效率。这部分可以看java垃圾回收机制了解,如果还不放心可以显示的调用垃圾回收机制来增加java回收垃圾触发的频率,java不能命令它什么时候回收垃圾,只能尽量的增加其调用的频率。用System.gc()。但是不建议主动去调用此函数,因为若不是针对性的去干扰java的垃圾回收装置会产生一些负面影响。所以仅仅将其置为 null 坐等java自己来处理。

   
        关于垃圾方面也建议,尽量用 StringBuffer 减少String 的多次初始化。

       有人说可以在重写onDestory,在里面加上   android.os.Process.killProcess(android.os.Process.myPid());这句,我试了试,能够实现是释放此静态变量。但是会出现短暂的黑屏。


      另外在有线程的情况下,一定要注意,最好在onDestory中关闭此activity中用到的线程




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值