我在Android开发方面真的很新,并创建了一个简单的应用程序,从互联网读取一些rss xml新闻源,我有点担心内存管理,因为每次应用程序读取xml源时调用GC_CONCURRENT,ddms显示我的堆大小是12,133Mb,我分配了11,549Mb(95.15%的使用率),我没有出现内存错误,我很担心因为应用程序到目前为止只有一个活动,内存使用率几乎是100%。
我的应用程序在内存使用方面是否健康?
p.s:抱歉可怜的英语
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
答案 0 :(得分:1)
之前我做过一些rss feed程序。由于我不知道您的代码的确切细节,我将假设您实现了一些您在谷歌上找到的代码。 12 MB是很多,但我几乎不认为这与rss feed本身有任何关系,因为在线发现的大多数代码写得非常好(如果不是,我真的怀疑他们会通过使用一个来增加你的内存到12mb简单的xml解析器)。
首先考虑一些事项:
rss阅读器的正常内存使用量大约为4 MB(至少每个解析器都有)
检查您的程序源代码,看看您是否还有其他需要额外内存的代码(浏览器,纹理,图片,图形引擎)
答案 1 :(得分:0)
这是当前分配的堆的5%。它会在需要时增长,直到达到最大堆大小,之后您将获得OutOfMemoryError
s。
就XML解析而言,一般建议是使用XmlPullParser
,因为它随Android框架一起提供,并且具有轻量内存要求。使用基于事件的解析器(而不是DOM解析器)进行解析更难,但好处是你没有在内存中保存文档的完整表示。