在寻找一些与 ligGDX 相关的信息时,我找到了 this page . 引起我注意的是这句话:
No, don't use a while loop. Might cause hangs.
我的问题是:这是真的吗?如果是真的,为什么?我假设它与垃圾收集器有关,但我不确定为什么 while 循环比 for 循环需要更多的 gc 注意力。
最佳答案
while
循环与任何其他循环一样安全。 for(;;)
、do-while
和 while
等所有循环类型最终都会产生非常相似的代码。
唯一的异常(exception)是for-each
循环。 for-each 循环仅适用于 Iterable
的事物。后台发生的事情是创建一个 Iterator
并使用其 hasNext()
和 next()
方法进行迭代。
这样做的问题是它会导致很小的开销。在大多数常见的 Java 集合实现中,每次执行循环都会创建一个新的 Iterator
对象。如果 for-each 循环运行得非常频繁,垃圾回收可能真的会成为一个问题并导致小的延迟。
由于您的问题中有 [libgdx] 标记,我假设您熟悉 LibGDX 提供的替换集合。例如 Array
或 ObjectSet
通过重新使用它们的迭代器来尝试完全避免我提到的问题。
关于java - libGDX - while 循环是否会导致挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28717657/