如何找出Android 2的位图有多少可用堆大小?*?

前端之家收集整理的这篇文章主要介绍了如何找出Android 2的位图有多少可用堆大小?*?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们的应用程序使用了很多位图.它适用于例如G1,XOOM.但是在HTC Desire上有一个OutOfMemory错误.在代码中我们使用try / catch(OutOfMemoryError e)并且所有设备(Desire除外)抛出异常,但HTC只是在没有OOM异常的情况下杀死应用程序.我们将位图的内存限制在12 Mb,似乎这个解决方解决了问题,但客户仍然在HTC Desire HD上遇到问题.即使有12 Mb的限制也有OOM.这是日志:
06-07 12:03:43.978 E/dalvikvm-heap( 29616):1140128-byte external allocation too large for this process. 
06-07 12:03:43.978 E/dalvikvm( 29616):Out of memory: Heap Size=12311KB,Allocated=9420KB,Bitmap Size=12139KB,Limit=21884KB
06-07 12:03:43.978 E/dalvikvm( 29616):Trim info: Footprint=15751KB,Allowed Footprint=15751KB,Trimmed=3440KB
06-07 12:03:43.978 E/GraphicsJNI( 29616):VM won't let us allocate 1140128 bytes

AFAIK设备有不同的堆大小限制(G1:16mb,Droid:24 mb,Xoom 48 mb).在我看来,系统应至少提供16 MB,但我们的OOM为12mb.我的问题是:如何找出Android 2的位图可用的可用堆大小.*?或者请告知如何以其他方式避免此类问题.仅供参考我们不能使用较少的位图,尤其是当它在其他设备上正常工作时.在此先感谢您的帮助!

解决方法

你可以试试
Runtime.getRuntime().maxMemory();

或Activity的方法

getMemoryInfo(ActivityManager.MemoryInfo;

此外,您可以覆盖Activity的

onLowMemory();

方法,您可以在关闭之前处理在活动获得内存问题通知时将发生的情况.您还应该从Android / Linux内存上的Android dev查看此answer.

猜你在找的Android相关文章