Java虚拟机没有任何已知原因停止响应

时间:2016-01-16 21:22:55

标签: 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不会在对象中产生,它们有足够的空间供它们产生。

我的代码中没有其他连续循环,因此还有其他原因导致#34;停止响应&#34;错误?

1 个答案:

答案 0 :(得分:2)

你肯定需要找出发生挂起的地方。请记住 - 它完全可能与&#34; for&#34;无关。循环:它可以在任何地方。

这是一个非常安全的赌注,并且#34;挂起&#34;是一个应用程序错误,而不是&#34; JVM错误&#34;。

建议:

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

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

  3. 写&#34; printf&#34;或者&#34;吐司&#34; &#34; for&#34;之前/之后的陈述循环以验证&#34;挂起&#34;实际上发生在循环内;

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

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

  6. 我不知道您的目标环境是什么。但是,如果有可能是Android,这篇文章可能有所帮助:

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