android模拟器上的内存不足错误,但不在设备上

pio*_*ojo 19 android out-of-memory

在Android模拟器上,当我退出我的应用并立即再次运行时,我明白了

OutOfMemoryError: bitmap size exceeds VM budget.
Run Code Online (Sandbox Code Playgroud)

但在设备本身,这不会发生.为什么?

ol_*_*_er 16

在模拟器上,默认的最大堆大小约为13MB.

在设备上,它取决于手机和Android版本.在我的摩托罗拉Droid上,最大堆大小约为21-22MB,在我的HTC Desire上它大约为32MB.

这就是为什么你在模拟器上而不是在你的设备上崩溃的原因.

如果要监视应用程序的堆大小,可以调用类似的方法:

protected void displayMemoryUsage(String message) {
    int usedKBytes = (int) (Debug.getNativeHeapAllocatedSize() / 1024L);
    String usedMegsString = String.format("%s - usedMemory = Memory Used: %d KB", message, usedKBytes);
    Log.d(TAG, usedMegsString);
}
Run Code Online (Sandbox Code Playgroud)


Avr*_*ore 13

在VM选项中增加AVD RAM和最大VM应用程序堆大小.

要做到这一点,去吧

窗口 - > AVD管理器 - >虚拟设备 - >编辑.

  • 一些样本最大堆大小:G1 = 16 Mb Droid = 24 Mb Nexus One = 32 Mb Xoom = 48 Mb GalaxyTab = 64 Mb. (2认同)

Atu*_*rne 5

你需要增加模拟器的堆大小 - 它对我有用,我将它从16 M增加到32 M