Java程序長時(shí)間運(yùn)行時(shí)自動(dòng)退出可能的原因

字號(hào):

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