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

