gpt4 book ai didi

java - 为什么我的应用程序的堆内存比其他应用程序少?

转载 作者:太空狗 更新时间:2023-10-29 13:42:19 24 4
gpt4 key购买 nike

我的问题可能看起来很幼稚,但我不知道如何更正确地表述它。问题是我在我的应用程序中创建并使用了大型简单类型数组。我收到如下错误:

ERROR/dalvikvm-heap(1763): Out of memory on a 7907344-byte allocation.

是的,它足够大了,但是任务管理工具声称我的应用程序只使用了 30MB 内存,而其他应用程序同时使用了 50MB 甚至 110MB(见过一次)并且系统中还有 190MB 的可用内存(不是系统应用程序,只是我安装的其他普通应用程序)。如果在启动时为所有应用程序提供相同的堆大小,它们怎么会变得如此之大?

最佳答案

Android 应用程序的最大堆大小取决于它运行的设备。对于早期的设备,最大堆大小为 16MB,但对于一些较新的设备,它可以达到 24MB,甚至可能达到 32MB。

这是每个设备上 Dalvik VM 的属性,您无法更改(无需从源代码重建 Android)。

您可以使用 ActivityManager.getMemoryClass() 查询“每个应用程序的内存类”这似乎是一个与堆大小不完全无关的数字。

应用程序可以使用不在堆上的内存,但 100+MB 似乎是一个大得惊人的数量。

如果您想了解如何分析 Android 上的内存使用情况,您最好的办法就是 this Stack Overflow answer by Dianne Hackborn ,他是 Google 的 Android 开发人员之一。简而言之,它表示分析内存使用情况非常困难,您应该对掌握的任何数据持保留态度。

关于java - 为什么我的应用程序的堆内存比其他应用程序少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4216789/

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