Java 虚拟机停止响应,原因不明

标签 java loops crash libgdx

将我的项目从 Eclipse 导出为可执行 Java 程序后,该程序随机停止响应。我找不到导致它的任何特定事件或操作。我能想到它发生的唯一原因是无限循环,但我唯一的原因是:

for(int i =0;i<pipes.length;i++){
    if((powerUp.bound.overlaps(pipes[i].bounds)|| (powerUp.bound.overlaps(pipes[i].bounds2)))|| (powerUp.bound.overlaps(blocks[i].bound))){
        powerUp.position.y=(float) ((HEIGHT/4)+((HEIGHT/2)* (Math.random())));
        i=0;
    }
}

这基本上确保了 powerUp 不会在对象内生成,有足够的可用空间供它们生成。

我的代码中没有其他连续循环,那么是否还有其他原因导致“停止响应”错误?

最佳答案

您绝对需要找出挂起发生的位置。请记住 - 它完全有可能与“for”循环无关:它可能在任何地方。

可以肯定的是,“挂起”是应用程序错误,而不是“JVM 错误”。

建议:

  1. 在 IDE 调试器(例如 Eclipse 或 Android Studio)中执行程序,并在发生“挂起”时查看线程/线程堆栈;

  2. 或者,在调试器中逐步执行程序,直到遇到挂起。

  3. 在“for”循环之前/之后编写“printf”或“toast”语句,以验证“hang”是否确实发生在循环内;

  4. 运行 strace , Windows Process Explorer或类似的操作系统级工具来查看程序挂起之前所做的最后一件事。

  5. 如果您有任何系统和/或应用程序日志,请务必检查它们。

我不知道你的目标环境是什么。但如果可能是 Android,本文可能会有所帮助:

祝你好运 - 请发回你发现的内容!

关于Java 虚拟机停止响应,原因不明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34832286/

相关文章:

Python - 循环运行 3 次

java - 将for循环转换为递归方法java

iphone - 尝试重置/重新创建时,OpenFlow 使应用程序崩溃

iOS 8 应用程序崩溃,应用程序在 iOS 7 上运行正常

java - 为什么 StringTokenizer.hasMoreTokens 不应该返回 true?

java - 如何使用涉及 Java 中的重定向的 header 执行 HTTP 请求

java - 如何在不使用 OOzie 的情况下创建 Hadoop 作业链

java - JAVA如何获取数组重复项的位置

ios - 如何理解 EXC_BAC_ACCESS (SIGSEGV) KERN_INVALID_ADDRESS 日志?

java - 不记得第一个用户输入