posts - 297,  comments - 1618,  trackbacks - 0
          java.lang.OutOfMemoryError這個錯誤我相信大部分開發人員都有遇到過,產生該錯誤的原因大都出于以下原因:JVM內存過小、程序不嚴密,產生了過多的垃圾。

          ???????????在一年多的工作過程中,遇到該問題的印象最深有兩次。

          ?????????? 一次是用hibernate查詢數據時,一次查詢過多的數據,例如30000條,此時程序出錯,該死的java.lang.OutMemoryError,后來調整了該部分的代碼,每次只取出指定量的數據,成功的解決該問題。

          ??????????? 還有一次是當測試人員loadRunner做壓力測試時,并發200個用戶時,運行不到幾分鐘整個weblogic都癱掉,真夠狠的,又是java.lang.OutOfMemoryError, PM叫我檢查同事寫的代碼,折騰了我好久,結果發現原來是由于session的資源一直沒有被釋放產生的,真把俺給氣死!!!在該工程中在web.xml文件中設置了一個session的偵聽期,當檢測到session超時時,進入指定的類進行相應處理,而該同事在進行了自定義的處理后,沒有通過session的invalidate()方法將session的資源釋放,導致當大批量并發時,造成內存溢出。

          ??????????? 解決java.lang.OutOfMemoryError的方法有如下幾種:

          1. 增加jvm的內存大小。方法有:

          ??????????? 1)在執行某個class文件時候,可以使用java?-Xmx256M?aa.class來設置運行aa.class時jvm所允許占用的最大內存為256M。
          ??????????? 2)對tomcat容器,可以在啟動時對jvm設置內存限度。對tomcat,可以在catalina.bat中添加:
          ?"set?CATALINA_OPTS=-Xms128M?-Xmx256M
          ??set?JAVA_OPTS=-Xms128M?-Xmx256M",或者把%CATALINA_OPTS%和%JAVA_OPTS%代替為-Xms128M?-Xmx256M

          ??????????? 3)對resin容器,同樣可以在啟動時對jvm設置內存限度。在bin文件夾下創建一個startup.bat文件,內容如下:
          ???????????????? @echo?off
          ????????????????? call?"httpd.exe"??"-Xms128M"?"-Xmx256M"
          ??????????????????:end?
          ??????????????????其中"-Xms128M"為最小內存,"-Xmx256M"為最大內存。

          ?? 2.??? 優化程序,釋放垃圾。

          ??????? 主要包括避免死循環,應該及時釋放種資源:內存,?數據庫的各種連接,防止一次載入太多的數據。導致java.lang.OutOfMemoryError的根本原因是程序不健壯。因此,從根本上解決Java內存溢出的唯一方法就是修改程序,及時地釋放沒用的對象,釋放內存空間。?遇到該錯誤的時候要仔細檢查程序,嘿嘿,遇多一次這種問題之后,以后寫程序就會小心多了。

          posted on 2007-02-11 23:35 阿蜜果 閱讀(36566) 評論(11)  編輯  收藏 所屬分類: Java


          FeedBack:
          # re: java.lang.OutOfMemoryError學習筆記
          2007-02-12 10:36 | 獅子心
          呵呵,我也遇到過類似的問題,有一次是處理大文本,就是試圖使用java分析日志,結果outofmemmory。。。后來使用awk,價格便宜量又足。  回復  更多評論
            
          # re: java.lang.OutOfMemoryError學習筆記
          2007-03-14 21:44 | 陳朋奕
          呵呵,同意,awk/gawk或者是sed在Linux下的處理速度和效率都是相當高的。Java還是比較耗機器性能的。
          PS:windows下好像也有個awk,沒用過,不知道效果如何?  回復  更多評論
            
          # re: java.lang.OutOfMemoryError學習筆記
          2007-05-17 10:45 | 鴻雁于飛
          我們的系統剛上線,經常因java.lang.OutOfMemoryError把jboss弄得死掉。  回復  更多評論
            
          # re: java.lang.OutOfMemoryError學習筆記
          2007-09-24 20:59 | maleung
          “導致java.lang.OutOfMemoryError的根本原因是程序不健壯。”
          很欣賞這句話,但是個人覺得太難了,就像是我們無法完全消除bugs一樣。
          為了博主的這句話而努力,代碼要寫的漂亮。  回復  更多評論
            
          # re: java.lang.OutOfMemoryError學習筆記 [未登錄]
          2008-11-10 10:17 | king
          不錯,學習了.  回復  更多評論
            
          # re: java.lang.OutOfMemoryError學習筆記
          2008-12-16 16:21 | wangts
          所描述的幾種原因是比較好處理的,但好像有更多的原因。
          “導致java.lang.OutOfMemoryError的根本原因是程序不健壯”
          在java里有點工作經驗的程序員很難寫出不釋放內存的代碼。
          只要不搞全局,不搞靜態,這些低級的錯誤。  回復  更多評論
            
          # re: java.lang.OutOfMemoryError學習筆記
          2009-02-01 13:52 | arron
          支持下 我也碰到這樣的問題 報表從html轉到excel中100頁也沒有問題 100多點 就開始報這個異常了!!  回復  更多評論
            
          # re: java.lang.OutOfMemoryError學習筆記
          2009-03-18 09:02 | littlemouse
          非常感謝!增加jvm的內存大小有效果.  回復  更多評論
            
          # re: java.lang.OutOfMemoryError學習筆記 [未登錄]
          2009-07-22 19:35 | 啊啊
          @wangts
          只要不搞全局,不搞靜態,這些低級的錯誤" 什么意思
          是不用這些就會沒問題了嗎
            回復  更多評論
            
          # re: java.lang.OutOfMemoryError學習筆記 [未登錄]
          2009-08-20 00:37 |
          支持,!  回復  更多評論
            
          # re: java.lang.OutOfMemoryError學習筆記
          2009-09-17 11:42 | 柱子
          剛學JAVA不久,就出現這個問題
          我在2G內存機器上沒問題,在512內存機器就出現問題了
          我試試,謝謝  回復  更多評論
            
          <2007年2月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728123
          45678910

                生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
                我的作品:
                玩轉Axure RP  (2015年12月出版)
                

                Power Designer系統分析與建模實戰  (2015年7月出版)
                
               Struts2+Hibernate3+Spring2   (2010年5月出版)
               

          留言簿(263)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          關注blog

          積分與排名

          • 積分 - 2299173
          • 排名 - 3

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 拜城县| 广州市| 金川县| 万山特区| 武陟县| 湘潭县| 阜新市| 贵南县| 云南省| 常熟市| 论坛| 黄龙县| 东方市| 高邑县| 鲁山县| 襄汾县| 赤水市| 庄浪县| 芷江| 松原市| 偃师市| 合作市| 驻马店市| 苍梧县| 桂林市| 石门县| 英山县| 贡觉县| 全州县| 逊克县| 集安市| 策勒县| 德钦县| 金堂县| 金寨县| 张掖市| 东源县| 视频| 宾阳县| 怀柔区| 化州市|