gpt4 book ai didi

java - 在 Android 应用程序中设置最小堆大小的目的是什么?

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

在 Android 操作系统的谷歌日历应用程序中,您会在 CalendarActivity 的 onCreate 方法中遇到这一行.

// Eliminate extra GCs during startup by setting the initial heap size to 4MB.
VMRuntime.getRuntime().setMinimumHeapSize(INITIAL_HEAP_SIZE)

有人可以解释为什么将其设置为 4MB 会消除 GC 吗?

最佳答案

JVM 通常从分配一个相对较小的堆开始。然后在每次 GC 运行后,它会检查有多少空闲堆内存。如果空闲堆占总堆的比例太小,JVM 将向堆中添加更多内存(直至配置的最大堆大小)。

第二个相关事实是,当有大量内存需要回收时,GC 运行效率最高。如果您没有遇到总体系统资源限制(例如触发分页或交换),与小堆相比,使用大堆运行可获得更好的应用程序性能。

假设应用程序编写者知道该应用程序很可能需要给定数量的堆(例如 4Mb)才能舒适地运行。通过将该大小设置为最小堆大小,意味着 JVM 不需要在堆填满(例如)1Mb、2​​Mb 和 3Mb 时运行 GC。因此,JVM 在应用程序启动和正常运行期间运行垃圾收集器的次数更少,应用程序启动更快,用户看到的 GC 暂停更少。

关于java - 在 Android 应用程序中设置最小堆大小的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1518154/

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