我承认有点标题党,准确的说应该是“Java程序为什么会退出”,自己随便总结几条,欢迎大家补充。
- 调用了System.exit
- 所有非后台线程运行结束或异常退出
- 线程内有没有捕获的异常,抛到了最外层,线程推出。
如一个简单的main程序,出现一个未捕获的异常,程序就退了。 但在GUI程序中一般不会,因为窗口线程总在。 - 遇到各种致命error,内存方面问题常见的是 OutOfMemoryError,影响整个jvm,导致退出。
- 无线递归导致线程堆栈溢出 StackOverflowError ,只影响该线程。
- 界面死锁,程序没反应。程序没有退出,但这时也只能kill掉了
没有评论:
发表评论