Java 虚拟机停止响应,原因不明
Java Virtual Machine stops responding with no known reason
将我的项目从 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 不会在对象内生成,有足够的空间 space 供它们生成。
我的代码中没有其他连续循环,所以还有其他原因导致 "stopped responding" 错误吗?
您肯定需要弄清楚哪里 发生了挂起。请记住 - 它完全可能与 "for" 循环无关:它可能在任何地方。
可以肯定 "hang" 是应用程序错误,而不是 "JVM bug"。
建议:
在 IDE 调试器(例如 Eclipse 或 Android Studio)中执行您的程序并在 "hang" 发生;
或者,在调试器中逐步执行程序,直到遇到挂起。
编写 "printf" 或 "toast" 语句 before/after 你的 "for" 循环来验证 "hang" 是否实际出现在环形;
运行 strace, Windows Process Explorer 或类似的 OS-level 工具来查看您的程序在挂起之前所做的最后一件事。
如果您有任何系统 and/or 应用程序日志,请务必检查它们。
我不知道你的目标环境是什么。但万一它可能是 Android,这篇文章可能会有所帮助:
祝你好运 - 请 post 找回你找到的东西!
将我的项目从 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 不会在对象内生成,有足够的空间 space 供它们生成。
我的代码中没有其他连续循环,所以还有其他原因导致 "stopped responding" 错误吗?
您肯定需要弄清楚哪里 发生了挂起。请记住 - 它完全可能与 "for" 循环无关:它可能在任何地方。
可以肯定 "hang" 是应用程序错误,而不是 "JVM bug"。
建议:
在 IDE 调试器(例如 Eclipse 或 Android Studio)中执行您的程序并在 "hang" 发生;
或者,在调试器中逐步执行程序,直到遇到挂起。
编写 "printf" 或 "toast" 语句 before/after 你的 "for" 循环来验证 "hang" 是否实际出现在环形;
运行 strace, Windows Process Explorer 或类似的 OS-level 工具来查看您的程序在挂起之前所做的最后一件事。
如果您有任何系统 and/or 应用程序日志,请务必检查它们。
我不知道你的目标环境是什么。但万一它可能是 Android,这篇文章可能会有所帮助:
祝你好运 - 请 post 找回你找到的东西!