androi开发中,如何避免内存泄露
答案:2 悬赏:0 手机版
解决时间 2021-03-17 20:02
- 提问者网友:溺爱和你
- 2021-03-17 06:12
androi开发中,如何避免内存泄露
最佳答案
- 五星知识达人网友:过活
- 2021-03-17 06:23
为了避免内存泄露,要注意一下事项
1.及时释放不再使用对象的引用 ,eg:obj=null;
2.Bitmap对象不在使用时调用recycle()释放内存
3. 查询数据库后关闭游标
4.在onPause中Remove 所有的SendMesseges发出的消息。不然容易造成Activity泄露
5.在onPause时,将显示ProgressDialog dissmiss掉,在需要时,在onResume时重新show,不然在onPause期间,系统会隐藏ProgressDialog消息,而app没有收 到,ProgressDialog将永远不会消失了。
6.不要对Context,Activity拥有较长时间的引用,否则也会造成与Context相关的内存泄露,使用Application这种Context类型,这种Context拥有和应用程序一样长的生命周期,并且不依赖Activity的生命周期。如果你打算保存一个长时间的对象,并且其需要一个Context,记得使用Application对象。你可以通过调用Context.getApplicationContext()或Activity.getApplication()轻松得到Application对象。
7 使用静态弱引用,内部类和它们对外部类的隐式引用也是很危险的,如果你不想控制内部类的生命周期,应避免在Activity中使用非静态的内部类,而应该使用静态的内部类,并在其中创建一个对Activity的弱引用WeakReference,如同ViewRoot和它的Winner类那样
8.长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景,eg:集合类对普通对象的引用
9.构造Adapter时,使用缓存的 convertView
10.对于多线程的处理,如果并发的线程很多,同时有频繁的创建和释放,可以通过concurrent类的线程池解决线程创建的效率瓶颈。
11.Android为每个程序分配的对内存可以通过Runtime类的totalMemory() freeMemory() 两个方法获取VM的一些内存信息,对于系统heap内存获取
1.及时释放不再使用对象的引用 ,eg:obj=null;
2.Bitmap对象不在使用时调用recycle()释放内存
3. 查询数据库后关闭游标
4.在onPause中Remove 所有的SendMesseges发出的消息。不然容易造成Activity泄露
5.在onPause时,将显示ProgressDialog dissmiss掉,在需要时,在onResume时重新show,不然在onPause期间,系统会隐藏ProgressDialog消息,而app没有收 到,ProgressDialog将永远不会消失了。
6.不要对Context,Activity拥有较长时间的引用,否则也会造成与Context相关的内存泄露,使用Application这种Context类型,这种Context拥有和应用程序一样长的生命周期,并且不依赖Activity的生命周期。如果你打算保存一个长时间的对象,并且其需要一个Context,记得使用Application对象。你可以通过调用Context.getApplicationContext()或Activity.getApplication()轻松得到Application对象。
7 使用静态弱引用,内部类和它们对外部类的隐式引用也是很危险的,如果你不想控制内部类的生命周期,应避免在Activity中使用非静态的内部类,而应该使用静态的内部类,并在其中创建一个对Activity的弱引用WeakReference,如同ViewRoot和它的Winner类那样
8.长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景,eg:集合类对普通对象的引用
9.构造Adapter时,使用缓存的 convertView
10.对于多线程的处理,如果并发的线程很多,同时有频繁的创建和释放,可以通过concurrent类的线程池解决线程创建的效率瓶颈。
11.Android为每个程序分配的对内存可以通过Runtime类的totalMemory() freeMemory() 两个方法获取VM的一些内存信息,对于系统heap内存获取
全部回答
- 1楼网友:纵马山川剑自提
- 2021-03-17 06:34
期待看到有用的回答!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯