我有一個Java程序,啟動了七個線程,這些線程都形如:
public void run() {
while (true) {
try {
......
} catch (Throwable t) {
t.printStackTrace();
}
}
}
但卻經常跑著跑著,跑了幾個小時後java退出,可能是哪些原因?
我猜測是我自己的代碼或是我使用的庫在哪裡調用了System.exit(),但是我用程序將System.exit()hook住了,發現沒有人調用這個函數。這個服務器只有我一個人在用,也不會有人kill。Java達人們幫忙想想,還有可能是什麼原因?
答復:
如果是應用,一般有2個可能
1 JVM BUG,這個簡單,升級你的JVM就好了
2 內存溢出,呵呵,我猜這個可能性最大。 你應該啟動工具監控一下程序的內存使用情況, jconsole就行