Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 进程使用大量内存_Android_Memory Leaks - Fatal编程技术网

Android 进程使用大量内存

Android 进程使用大量内存,android,memory-leaks,Android,Memory Leaks,我正在构建一个Android应用程序,它使用SAX解析大约500个项目的相当大的XML文件,然后通过自定义适配器将其呈现到ListView。我正在将XML解析为我创建的列表,然后将列表对象传递给我的自定义适配器。并非所有500项都添加到列表中,通常大约50项 在我的Nexus One上,一切都很好,应用程序似乎响应速度很快,但当我在“设置”中的“运行->显示缓存进程”下查看应用程序时,该进程可以使用40MB-70MB的内存。不确定我是否有内存泄漏,或者这意味着什么,但对我来说似乎相当高。即使是5

我正在构建一个Android应用程序,它使用SAX解析大约500个项目的相当大的XML文件,然后通过自定义适配器将其呈现到ListView。我正在将XML解析为我创建的列表,然后将列表对象传递给我的自定义适配器。并非所有500项都添加到列表中,通常大约50项


在我的Nexus One上,一切都很好,应用程序似乎响应速度很快,但当我在“设置”中的“运行->显示缓存进程”下查看应用程序时,该进程可以使用40MB-70MB的内存。不确定我是否有内存泄漏,或者这意味着什么,但对我来说似乎相当高。

即使是500个项目,除非XML非常冗余或者每个项目都非常大,否则在文件方面应该没有问题

您可以做的是,您可以从Eclipse检查在DDMS中进行分配的内容:打开DDMS透视图=>单击设备下列表中的应用程序名称=>分配跟踪器选项卡=>开始跟踪=>在列表呈现后获取分配


关于您运行的应用类型可能会有所帮助的更多信息。

xml文件的大小是多少?分析和查找内存泄漏的最佳方法是在Android工具和MAT中使用堆转储。这里还有一篇关于这个的博文:谢谢,我会看看分配情况。该应用程序基本上是一个RSS阅读器。正如我提到的,它解析一个相当大的RSS提要1.32MB文件大小,并对其进行一些过滤,并显示20-100个项目的列表视图。不过我不知道怎么读。我到底在寻找什么会表明内存泄漏呢?内存泄漏基本上看起来像是从同一个函数中进行的相同分配,而不是被垃圾回收。如果垃圾回收器一直在运行,则意味着代码分配过多。如果垃圾收集器未运行且堆大小不断增大,则存在泄漏。运行4个左右的测试,看看是否有重新发生的分配。如果您看到相同的函数进行相同的分配,并且没有垃圾被收集,那么您正在泄漏。明白了。谢谢你的回复!