java - libGDX - while 循环是否会导致挂起

标签 java libgdx

在寻找一些与 ligGDX 相关的信息时,我找到了 this page . 引起我注意的是这句话:

No, don't use a while loop. Might cause hangs.

我的问题是:这是真的吗?如果是真的,为什么?我假设它与垃圾收集器有关,但我不确定为什么 while 循环比 for 循环需要更多的 gc 注意力。

最佳答案

while 循环与任何其他循环一样安全。 for(;;)do-whilewhile 等所有循环类型最终都会产生非常相似的代码。

唯一的异常(exception)是for-each 循环。 for-each 循环仅适用于 Iterable 的事物。后台发生的事情是创建一个 Iterator 并使用其 hasNext()next() 方法进行迭代。

这样做的问题是它会导致很小的开销。在大多数常见的 Java 集合实现中,每次执行循环都会创建一个新的 Iterator 对象。如果 for-each 循环运行得非常频繁,垃圾回收可能真的会成为一个问题并导致小的延迟。

由于您的问题中有 [libgdx] 标记,我假设您熟悉 LibGDX 提供的替换集合。例如 ArrayObjectSet 通过重新使用它们的迭代器来尝试完全避免我提到的问题。

关于java - libGDX - while 循环是否会导致挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28717657/

相关文章:

java - 如何使用IntelliJ IDE将媒体资源正确地添加到(Java)Gradle工件中?

java - 如何将一个项目拖放到另一个项目上?

java - Libgdx - 基本着色器不工作

java - LibGDX 让世界移动,但玩家不动

ios - 带有 RoboVM 的适用于 iOS 的 Libgdx - IOSGLES20.init 中的不满意链接错误

android - 是否使用 libgdx 在 android 中进行屏幕录制

java - SOAP 消息到 web 服务 - HTTP 响应代码 : 403 for URL

java - 法语字符编码问题 è 在 java 中显示为 è

java - 如何使用 Java 查找非字母表

LibGDX 用一个角度切割纹理