【问题标题】:android memory issue - app uses a lot of ramandroid内存问题 - 应用程序使用大量内存
【发布时间】:2012-08-08 10:17:43
【问题描述】:

我的 android 应用程序的内存使用存在一些问题,不知道是什么导致了高内存使用。当我启动我的应用程序时,它使用了高达 40 mb 的内存(DDMS 说),当我打开另一个应用程序时,我的应用程序立即被杀死。

我阅读了很多关于内存泄漏的信息,我正在解绑可绘制对象、运行 GC 等等,但我的应用仍然需要大量内存。

我的应用程序中有大约 3mb 的资源,但是它们是按需加载到 ram 中的。我错了吗?这可能会导致 40mb 的内存使用量吗?

编辑:我认为我没有内存泄漏,因为我可以根据需要随时切换每个活动的方向,并且应用程序不会因为内存不足而崩溃。所以不会是内存泄露吧?

【问题讨论】:

    标签: android memory memory-leaks ram


    【解决方案1】:

    你需要在你的android应用程序中进行内存管理,请释放不再使用的资源,尝试覆盖Activity的onStop()、onDestroy()、onPause()方法,这些方法将跟踪活动堆栈。

    在 OnDestroy() 方法中释放所有可用资源,以便另一个应用程序可以再次使用相同的资源。

    【讨论】:

    • 我已经覆盖了 onDestroy (我认为已经足够了,因为我在开始一个新活动后完成了一个活动)一个未绑定的可绘制对象(线性布局的背景图像)并调用 GC
    【解决方案2】:

    您使用什么数据结构?非常大的数据结构(长列表、大图、大地图等)会很快耗尽 RAM。

    也可能是您在应用中的方向更改时泄露了上下文。

    也可能是你的布局设计得很糟糕,还有一些繁重的数据结构。

    除非你描述更多关于你的应用试图做什么,否则很难说清楚。

    【讨论】:

    • 我没有使用大型数据结构。我有很多布局文件和可绘制文件,但它们每个都很小(并且布局不是很复杂)。我有一个启动屏幕,然后是一个连接到 Web 服务的小型 loginActivity。成功登录后,还有其他不复杂的活动。大量可绘制对象仅用于选择图像并且在您按下按钮之前不会加载。但在此之前,该应用已经使用了 40 mb 的 RAM。
    • 这很奇怪。抱歉,我暂时没有想法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2016-06-30
    相关资源
    最近更新 更多