gpt4 book ai didi

java - 如何在 Android 上预分配最大堆空间

转载 作者:行者123 更新时间:2023-12-01 12:14:41 24 4
gpt4 key购买 nike

我正在开发一个需要大量堆空间的图像处理应用程序,并通过网络发送这些图像。问题是每个图像都会产生类似的消息

Grow heap (frag case) to 16.38M for 1536000 byte allocation 

这种增长似乎需要很长时间,因为当我从计算机发送图像时需要 1 秒,但使用我的 Android 应用程序大约需要 1 分 30 秒。

我的问题是,有没有办法预先分配最大堆大小,以便堆不必继续增长?

最佳答案

... is there a way to pre-allocate the max heap size so that the heap doesn't have to keep growing?

我不这么认为。通读Android内存管理article什么也没透露。

在经典 Java 中,您可以设置初始堆大小,以避免不断增长堆的性能开销。但 Android 上的假设似乎是您应该始终尽量减少内存使用。

如果您简单地分配一个非常大的数组并立即使其不可访问,您可能会得到一些“乐趣”。 GC 应该增大堆,以便它可以容纳数组……并且数组占用的空间通常会被回收并在下一个 GC 周期中可用。另一方面,当 GC 回收大量内存时,它可能会收缩堆,将大部分空间返还给操作系统。

<小时/>

话虽如此,我们可能会建议您更改应用程序,以便它不需要在内存中保存大量图像。在我看来,您可能存在某种类型的内存泄漏。阅读这些链接:

关于java - 如何在 Android 上预分配最大堆空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27084882/

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