小菜毛毛技術分享

          與大家共同成長

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks

          問題表現:

          當用戶執行一個大數據的應用時(凈字節碼量約為5M)時,系統會提示出錯:

          前臺錯誤為:HTTP Status 500-Dispatch[EAITool] to method listCurTree retrun an exception

          (以下省略)

          ………………………………………………………

          ………………………………………………………

          后臺錯誤為:java.lang.OutOfMemoryError: unable to create new native thread
                  at java.lang.Thread.start(Native Method)
                  at org.apache.catalina.loader.WebappLoader.notifyContext(WebappLoader.ja
          va:847)

          (以下省略)

          ………………………………………………………

          ………………………………………………………

          問題分析:

             由于TOMCAT內存溢出而引發的問題,主要原因是JVM的虛擬內存默認為128M,當超過這個值時就把先前占用的內存釋放,而導致好象TCP/IP丟包的假象,出現HTTP500的錯誤。  
                解決方法主要是加大TOMCAT可利用內存,并在程序當中加大內存使用。

          解決方法:

          方法:加大TOMCAT可利用內存:
            在TOMCAT的目錄下,也就是在TOMCAT41/bin/catalina.bat文件最前面加入
            set JAVA_OPTS=-Xms800m -Xmx800m
            表現效果是當你啟動TOMCAT時,系統內存會增加近800M使用

          操作方法:
            1)、先關掉WINDOWS服務當中的TOMCAT4服務。
            2)、再找到TOMCAT/BIN目錄下startup.bat,雙擊打開它,你會發現現WINDOWS內存占用會增加近800M
            3)、執行程序,因為是TOMCAT重新編譯程序,所以第一次會比較慢。

          結論:

          經過測試,我們得出如下數據:

          系統傳輸約2000條數據時,大約近12M的凈數據(不壓縮時),系統輔助運行的內存大約占用150M左右的空間,也就是近200M的內存占用,而我們擴大了近800MJAVA內存使用,這對于業務本身來說是足夠了。所以你們不用擔心大數據量的傳遞問題。

          基于JAVA虛擬機的原理,JAVA自動有垃圾回收機制,也就是在你對一些內存長時間不使用時(近2分鐘,取決于使用頻度和優先級等),就會自動垃圾回收,從而釋放不用的內存占用。

          posted on 2010-01-18 14:05 小菜毛毛 閱讀(1255) 評論(0)  編輯  收藏 所屬分類: 應用服務器
          主站蜘蛛池模板: 遵化市| 扶沟县| 兴宁市| 凌海市| 林西县| 独山县| 永嘉县| 云浮市| 富源县| 资讯 | 梁河县| 宣化县| 六安市| 谢通门县| 高雄市| 平武县| 卫辉市| 田阳县| 凤山县| 章丘市| 新沂市| 南开区| 和政县| 锦屏县| 长沙市| 吉林市| 潼关县| 武夷山市| 吐鲁番市| 红安县| 长治市| 仲巴县| 温州市| 株洲县| 镇巴县| 疏附县| 平陆县| 长岭县| 姜堰市| 建昌县| 兴城市|