tomcat死機原因

   公司服務系統蹦掉了好幾次,因爲是個遺留系統,有沒有留下開發文檔,代碼已經很亂了。一直沒時間去找原因,只是簡單的清理了下重啓了tomcat,老闆就這問題也說了好幾次,要求找出原因。昨天新的一年開工了,首要任務就是解決這個問題。

  想想無非就那麼幾個地放出問題。硬件問題?雖說公司服務器比較爛吧也不至於跑不起這個系統,可以排除。一開始沒有第一時間去看tomcat的日誌,就去檢查是不是數據庫connection沒有close,看看都關閉了,只是大部分地方沒有關閉ResultSet和Statement,關閉了connection應該其餘也就關閉了。

  今天看日誌才知道是內存溢出。

  拋出異常:

Exception in thread "http-80-114" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-80-115" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-80-116" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-80-117" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-80-118" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-80-119" java.lang.OutOfMemoryError: PermGen space

 

找到了原因,問題就好解決了,修改jvm的內存大小就ok,不知道後面還會不會有問題,再看了。

 

轉載下網上的解決方法,以防以後忘了。

 

  拋出異常java.lang.OutOfMemoryError: PermGen space 。網上查找資料,解釋爲:

        PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中,它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的應用中有很多CLASS的話,就很可能出現PermGen space錯誤,這種錯誤常見在web服務器對JSP進行pre compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)那麼就會產生此錯誤信息了。

        解決方法:手動設置MaxPermSize大小。網上多爲修改配置文件的方式。我的操作系統是windows2003, 用tomcat本身提供的工具(Configure Tomcat)就可以設置。如下圖所示,在java options中加入紅色方框中的兩行語句即可。通過命令行參數-XX:PermSize和-XX:MaxPermSize設置該區域的大小,數值應根據機器實際內存大小來定。注:每行命令前後不要有空格,否則會導致tomcat啓動失敗。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章