gpt4 book ai didi

android - 相同的应用程序在不同的 Android 设备上使用不同数量的内存

转载 作者:行者123 更新时间:2023-11-29 00:47:43 24 4
gpt4 key购买 nike

我正在开发一款游戏,该游戏使用 2000x2000 像素图像中的位图进行 Activity 。

在我的 HTC Hero 中运行 Activity 时,我使用了 12MB。

但是,如果我尝试在具有 16MB 堆的任何模拟器中运行该应用程序,VM 会因为试图分配 16.4MB 的 OutOfMemoryError 而崩溃;怎么可能?

我也尝试过使用其他模拟器并使用了 20MB。

要测量我正在使用的内存量:

int usedMegs = (int) (Debug.getNativeHeapAllocatedSize() / 1048576L);
String usedMegsString = String
.format(" - Memory Used: %d MB", usedMegs);
getWindow().setTitle(usedMegsString);

为什么同一张位图在 HTC Hero 中需要 12MB 而在其他设备中需要 20MB?

编辑:我发现这是密度的原因。密度 1 = 12MB,密度 0.75 = 8MB 和密度 1.5 = 20MB(不完全是,一些 MB 来自其他 Activity )

我可以告诉 1.5 密度的设备使用 1 来解码位图吗???

编辑 2:我在/drawable 中有图像,所以当我用 1.5 加载它时,它变大了。 如果我将图像放在/drawable-hdpi 中,图像需要更少的内存 (12 MB),因为它没有缩放。

最佳答案

如何将位图加载到内存中?这只是我的猜测,但也许 HTC 设备正在使用 24 位色彩空间加载位图,而其他设备正在使用 32 位色彩空间。每像素 24 位的 2000x2000 位图将使用大约 12 MB 的内存,而每像素 32 位的相同位图将需要接近 16 MB 或内存。

关于android - 相同的应用程序在不同的 Android 设备上使用不同数量的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5367825/

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