将我的项目从 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 错误”。
建议:
在 IDE 调试器(例如 Eclipse 或 Android Studio)中执行程序,并在发生“挂起”时查看线程/线程堆栈;
或者,在调试器中逐步执行程序,直到遇到挂起。
在“for”循环之前/之后编写“printf”或“toast”语句,以验证“hang”是否确实发生在循环内;
运行 strace , Windows Process Explorer或类似的操作系统级工具来查看程序挂起之前所做的最后一件事。
如果您有任何系统和/或应用程序日志,请务必检查它们。
我不知道你的目标环境是什么。但如果可能是 Android,本文可能会有所帮助:
祝你好运 - 请发回你发现的内容!
关于Java 虚拟机停止响应,原因不明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34832286/