【问题标题】:Android Memory Management - Is my app healthy?Android 内存管理 - 我的应用是否健康?
【发布时间】:2013-04-01 10:48:38
【问题描述】:

我是 android 开发的新手,并且创建了一个简单的应用程序,可以从互联网读取一些 rss xml 新闻提要,我有点担心内存管理,因为每次应用程序读取 xml 提要时,都会调用 GC_CONCURRENT,ddms显示我的堆大小为 12,133Mb,我分配了 11,549Mb(95.15% 的使用率),我没有出现内存不足的错误,我很担心,因为应用程序到目前为止只有一个活动,内存使用率几乎是 100%。

我的应用在内存使用方面是否正常?

ps:对不起英语不好

04-09 17:02:58.731: D/InicioActivity(8998): Categoria: Mundo
04-09 17:02:58.762: D/dalvikvm(8998): null clazz in OP_INSTANCE_OF, single-stepping
04-09 17:02:59.255: D/dalvikvm(8998): GC_CONCURRENT freed 356K, 5% free 11879K/12423K, paused 3ms+7ms, total 30ms
04-09 17:02:59.458: D/InicioActivity(8998): Categoria: Brasil
04-09 17:02:59.505: D/dalvikvm(8998): GC_CONCURRENT freed 515K, 5% free 11831K/12423K,     paused 12ms+2ms, total 30ms
04-09 17:03:00.106: D/dalvikvm(8998): GC_CONCURRENT freed 465K, 5% free 11804K/12423K, paused 12ms+3ms, total 30ms
04-09 17:03:00.153: D/InicioActivity(8998): Categoria: Negócios
04-09 17:02:59.255: D/dalvikvm(8998): GC_CONCURRENT freed 356K, 5% free 11879K/12423K, paused 3ms+7ms, total 30ms
04-09 17:02:59.458: D/InicioActivity(8998): Categoria: Brasil
04-09 17:02:59.505: D/dalvikvm(8998): GC_CONCURRENT freed 515K, 5% free 11831K/12423K, paused 12ms+2ms, total 30ms
04-09 17:03:00.106: D/dalvikvm(8998): GC_CONCURRENT freed 465K, 5% free 11804K/12423K, paused 12ms+3ms, total 30ms
04-09 17:03:00.153: D/InicioActivity(8998): Categoria: Negócios

【问题讨论】:

    标签: android memory heap-memory


    【解决方案1】:

    这是当前分配的堆的 5%。如果需要,它会增长,直到达到最大堆大小,之后您将获得OutOfMemoryErrors。

    在 XML 解析方面,一般建议使用XmlPullParser,因为它是 Android 框架自带的,对内存的要求不高。使用基于事件的解析器(相对于 DOM 解析器)进行解析比较困难,但好处是您不会在内存中保存文档的完整表示。

    【讨论】:

      【解决方案2】:

      我以前做过一些 RSS 提要程序。由于我不知道你的代码的确切细节,我假设你实现了一些你在谷歌上找到的代码。 12 MB 很多,但我几乎不认为这与 rss 提要本身有任何关系,因为在网上找到的大多数代码都写得很好(如果不是,我真的怀疑它们会通过使用简单的 xml 解析器)。

      首先考虑几件事:

      1. RSS 阅读器的正常内存使用量约为 4 MB(至少我的每个解析器都是如此)

      2. 检查您的程序源代码,看看您是否有任何其他需要额外内存的代码(浏览器、纹理、图片、图形引擎)

      3. 您尝试解析的 xml 大小是否至少为 1MB?如果是这样,我建议您找到其他方法来解析它。
      4. 由于您是新来的,我建议您从现在开始在提问时添加一些示例代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-06
        • 2018-11-15
        • 1970-01-01
        • 1970-01-01
        • 2012-02-29
        • 2020-01-26
        相关资源
        最近更新 更多