gpt4 book ai didi

java - 内存不足时是否运行 Java GC?

转载 作者:行者123 更新时间:2023-11-29 03:18:14 26 4
gpt4 key购买 nike

我正在使用 Java(不使用 NDK)开发基于 Android 的 3D 游戏。任何游戏的必备品之一是资源缓存,我可以在其中存储加载的纹理、网格、声音等。

我的计划是开发一个资源缓存,分发对某些资源的弱引用,这样只有缓存本身保持对资源的强引用,这意味着如果我从缓存中删除资源,它将被垃圾收集不用我担心。

不过,我很难找到以下问题的答案:假设我已经将我的资源缓存填满到我的堆空间几乎完全填满的程度。我现在想加载一个额外的资源,但它的内存占用太大,无法容纳在我的可用堆空间中。为了适应新对象的大小,我从缓存中删除了一些条目并加载了新对象。这可能会导致 OutOfMemory 异常吗?只要垃圾收集器没有扫过我最近删除的对象,内存就一直在使用中,那么垃圾收集器是否足够聪明来运行新的扫描以容纳新分配的对象?

最佳答案

JVM 将在抛出 OutOfMemoryError 之前运行 Full GC(它不想抛出 OOME,因此它会尝试一切皆有可能)。就是这么体贴。

关于java - 内存不足时是否运行 Java GC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25242033/

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