国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java內存溢出導致服務器死機之應急解決方案

2019-11-18 14:11:24
字體:
來源:轉載
供稿:網友

  最近在做一個網站,使用的編程語言是jsp,Web服務器采用Resin-2.1.6發布,操作系統使用linux9.0,但是在網站運行過程中發現java可用內存越來越少,有時程序會報出java.lang.OutOfMemoryError的錯誤,甚至導致Resin死機。 
    其實這種現象在Java語言中很正常,我們通常稱之為Java內存溢出。由于我們在Java程序中聲明了好多對象,占用了內存空間,程序結束時沒有將這些對象或對象的引用進行釋放,從而導致Java虛擬機(JVM)進行垃圾回收(GC)時,不能夠回收這些對象。這樣,Java所用的內存就會一直增加,直至溢出,進而導致Resin死機。 
    導致Java內存溢出的根本原因是Java程序的不規范或不健壯。因此,從根本上解決Java內存溢出的唯一方法就是修改Java程序,及時地釋放沒用的對象,釋放內存空間。 
    除了這個方法以外,還有一些應急措施,可以臨時緩解一下系統的運行。Resin默認情況是死機以后不能訪問網站,必須手動重啟Resin,但不可能一直看在機器旁邊,看Resin有沒有死機。所以這里介紹一種讓Resin自重啟的方法。 
    打開Resin的配置文件resin.conf(一般情況下,該文件在Resin目錄的conf文件夾下)。里面有一段內容如下所示: 
  <!-- 
     - Ping to test if the web server is still up.  You can uncomment this 
     - and point it to pages on the webserver that exercise your main 
     - logic (like database access).  If the GET fails, it will restart 
     - the server.  This will catch deadlocks, but not JDK freezes. 
     - <ping sleep-time=’1m’ retry-count=’3’ retry-time=’1s’> 
     -   <url>http://localhost:8080/ping/ping.jsp</url> 
     - </ping> 
   --> 
    這段內容默認情況下是被注釋的。它的功能是讓Resin每隔一分鐘就測試一下能否訪問/ping/ping.jsp文件,測試時間是1s,假如不成功,就重試三次。假如三次都不成功,Resin就自動重啟。所以將這段話下半部分(從"<ping "到"</ping>")的注釋去掉,然后在Resin的發布目錄中新建一個文件夾ping,在ping文件夾下新建一個ping.jsp文件,文件中可以寫入簡單的一句話,如:<% out.PRintln("Hello world");%>。 
   好,大功告成,啟動Resin,這樣就不用擔心Java內存溢出導致Resin死機了,因為Resin死機后會馬上重新啟動。 
   當然,這只是應急措施,不是長久之計。假如從長計議,還是要耐心的更改Java程序!!!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海丰县| 阳朔县| 商城县| 明光市| 澄城县| 绵阳市| 凤冈县| 堆龙德庆县| 墨玉县| 育儿| 怀集县| 和硕县| 敦煌市| 永寿县| 石河子市| 渭南市| 横峰县| 定陶县| 武川县| 桂林市| 轮台县| 赤壁市| 正镶白旗| 乌审旗| 宾川县| 建德市| 澎湖县| 渝北区| 元阳县| 恭城| 白朗县| 环江| 文山县| 炎陵县| 湖口县| 德令哈市| 竹山县| 高雄市| 聂拉木县| 仲巴县| 和硕县|