如何在android中释放内存以避免内存泄漏

时间:2013-07-27 06:19:57

标签: android performance memory-leaks

在浏览Android开发者网站时,我找到了这个it says to avoid memory leak we should release resources  in onStop()

它说为了避免内存泄漏我们应该在onStop()中释放资源,但是如何这样做。

2 个答案:

答案 0 :(得分:7)

有一些臭名昭着的内存生猪的例子,媒体(音频/视频)和大型位图是最大的内存生猪。通过删除指向它们的所有指针并让GC使用它们来处理大多数事情。但是,使用以下命令可以立即回收位图:

if (yourBitmap != null) {
    yourBitmap.recycle();
    youBitmap = null;
}

应停止并取消引用您的媒体。但它应该在onPause()中停止,而不是在onStop()之前停止。

答案 1 :(得分:6)

基本上任何正确无效的对象都被视为已释放,并且操作系统可以回收它们的内存。你的问题过于笼统,很难提供详尽的方法清单,但你通常应该注意这些:

  1. 停止/关闭您不再需要的任何服务/文件/连接
  2. 不要将任何Drawable存储在任何静态对象中,Drawables持有对其所有者View的引用,其中包含对其所有者Activity的引用,因此如果您持有任何Drawable,您将保留很多不必要的对象/内存
  3. 对于实用程序应用程序,您可能不必担心内存;但对于使用大量位图的应用,您应该深入了解Bitmap management以及如何在应用中使用位图以有效管理它们