gpt4 book ai didi

android - 如何找出有多少空闲堆大小可用于 Android 2.* 的位图?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:52 24 4
gpt4 key购买 nike

我们的应用程序使用了大量位图。例如在 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

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

最佳答案

你可以试试

Runtime.getRuntime().maxMemory();

或者Activity的方法

getMemoryInfo(ActivityManager.MemoryInfo;

此外,您可以覆盖 Activity 的

onLowMemory();

方法,您可以在该方法中处理当 Activity 在关闭之前收到内存问题通知时将发生的情况。你也应该检查这个 answer来自 Android/Linux 内存上的 Android 开发人员。

关于android - 如何找出有多少空闲堆大小可用于 Android 2.* 的位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6270838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com