【问题标题】:Android application on low memory calling低内存调用的Android应用程序
【发布时间】:2015-04-24 08:29:31
【问题描述】:

在我的应用程序中,我覆盖了 onLowmemory 方法。 每次都会调用它。而且我的手机卡住了。这种方法如何释放内存。

我正在使用以下代码:

@Override
    public void onLowMemory() {
        // TODO Auto-generated method stub
        super.onLowMemory();
        System.out.println("*************************************************");
        System.out.println("********** on low memory ************************");
        System.out.println("*************************************************");
        System.gc();
    }

仅使用 system.gc ...谢谢。

【问题讨论】:

  • 你不应该使用 System.gc();,找到什么消耗你的内存(可能是大图像)
  • 你读过Javadoc for onLowMemory()吗? “你应该实现这个方法来释放你可能持有的任何缓存或其他不必要的资源。从这个方法返回后系统将为你执行垃圾收集。” 所以,1)调用@ 987654325@ 没用,并且 2)您应该释放驻留在内存中的所有缓存/资源,这些缓存/资源并非绝对需要让您的应用程序正常运行(即可以从磁盘/数据库/网络等重新加载的东西)。
  • 当整个系统内存不足时调用此方法,并且正在运行的进程应该修剪它们的内存使用量。虽然没有定义调用它的确切时间,但通常会在所有后台进程都被杀死时发生。也就是说,在达到终止进程托管服务和前台 UI 之前,我们希望避免终止。阅读android官方文档developer.android.com/reference/android/app/…

标签: android performance low-memory android-applicationinfo


【解决方案1】:

你不应该调用 System.gc() 它会产生性能问题。 您必须释放对您持有的任何重物的引用 - 查看您的应用程序的足迹。进行堆转储并在 MAT 中查看它。查看哪些对象占用了最多的内存并检查是否可以释放它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多