Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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_Nexus S - Fatal编程技术网

Android内存峰值

Android内存峰值,android,memory,nexus-s,Android,Memory,Nexus S,首先,感谢您抽出时间来查看我的问题。我目前在开发的应用程序中遇到内存尖峰问题 我的目的是能够下载和处理大量HTML数据,目前的原因是嵌套在HTML中的大型base64编码图像,据我所知,这些图像不适合在移动平台上使用。作为记录,我目前正在三星Galaxy S上进行测试。此外,由于每个应用程序分配了更多内存,Galaxy Nexus上不会出现此问题 我的问题是,在处理大约2.8mb的大量HTML数据时,内存堆增加到27-29mb左右,但分配的内存从未超过18-19mb。处理、保存和显示HTML后,

首先,感谢您抽出时间来查看我的问题。我目前在开发的应用程序中遇到内存尖峰问题

我的目的是能够下载和处理大量HTML数据,目前的原因是嵌套在HTML中的大型base64编码图像,据我所知,这些图像不适合在移动平台上使用。作为记录,我目前正在三星Galaxy S上进行测试。此外,由于每个应用程序分配了更多内存,Galaxy Nexus上不会出现此问题

我的问题是,在处理大约2.8mb的大量HTML数据时,内存堆增加到27-29mb左右,但分配的内存从未超过18-19mb。处理、保存和显示HTML后,分配的内存将恢复到3-4mb左右。如果我要再次下载并处理这个HTML,这个过程会重复,我会得到相同的内存使用,除了似乎要进一步增加堆(对我来说似乎没有必要),此时我收到一个
内存不足的错误

当我收到此错误时,通常是在使用
HttpGet
下载HTML时,或者在使用
StringBuffer
从磁盘提取数据时。有时它是由XML膨胀期间的
位图
引起的


任何帮助都将不胜感激。

如果你真的需要这么大的内存,你几乎无能为力。手机内存有限

释放内存不是瞬时的。释放所有内存可能需要几次迭代(每次迭代可能间隔几秒钟执行)

图像/绘图设备使用的内存太多,这是经常出现的问题。有时是内存泄漏;其他时候,我们不可能说出是什么原因造成的


我在解析大型xml文件时也遇到了问题。我的解决方案是将这些文件拆分成更小的文件。另一种可能性是考虑不同xml解析器的优缺点(第一个google结果:)。也许使用一些第三方实现专门开发的内存使用问题?第三种选择是使用服务器将xml文件转换为更高效的格式。

最佳做法是不分配大量内存。在从网络读取数据时处理流中的数据,或者将数据流到磁盘,然后从磁盘读取。android:largeHeap选项在所有运行android 3.0或更高版本的设备上都可用,但这只会增加您可以分配的数量,而不会完全取消限制

Galaxy S运行的是2.3,对吗?所以你把姜饼和ICS做比较。您应该在解析后尽可能地进行清理…谢谢您的回复。星系S是2.3.6。我正在尽可能多地清理,我只是好奇为什么分配的内存从来没有超过18mb,但它仍然试图扩展堆…请发布为垃圾收集生成的LogCat输出和失败的最终分配。感谢Pedro的回复,我稍后将查找第三方库。我目前正在解析JSON数据中的HTML,但我似乎无法回避较大数据块的内存峰值。