当我的应用程序要求更多内存时,Android不会自动终止/释放内存

时间:2011-11-01 14:56:43

标签: android memory

我有一个Android应用程序,它使用很多内存进行像素操作。而我注意到的是android不会杀死程序或释放内存而支持前台应用程序。而我的应用程序崩溃没有足够的内存错误。现在我让它自动检测剩余多少内存并适当缩放图片。这样可以防止崩溃,但会导致图像质量不佳。

有没有办法告诉Android操作系统,释放内存,因为我的应用程序是内存饥渴。根据我从android中读到的内容,操作系统应该自动执行此操作。但似乎并没有这样做。也许我错过了什么? iPhone似乎处理得更好。

2 个答案:

答案 0 :(得分:1)

Android应用程序具有硬Java堆限制,因设备而异。 24MB是典型金额。

因此,显而易见的解决方法是不在Java中分配大对象......您可以使用本机C方法对像素字节数组进行malloc操作。

然而24MB应该足以让任何人借用一个短语,所以我建议你尝试重新思考你的方法。也许更积极地重用固定大小的池中的位图,将图像分解成更小的图块等等。

答案 1 :(得分:0)

避免过多使用getPixel()setPixel(),因此会导致非常糟糕的性能,这已在Android文档中提及过。 此外,管理您自己的内存使用情况Java,Garbage Collector只要您遵守规则就会运行。