完美解決java.lang.OutOfMemoryError處理錯誤的問題 - 程式前沿

文章推薦指數: 80 %
投票人數:10人

OutOfMemoryError: PermGen space. 2.tomcat:java.lang.OutOfMemoryError: Java heap space ... Java程式碼導致錯誤的解決: 重點排查以下幾點:. 程式語言前端開發IOS開發Android開發雲端運算人工智慧伺服器搜尋資料庫軟體開發工具完美解決java.lang.OutOfMemoryError處理錯誤的問題2018.06.30程式語言error,memory,of,outHOME程式語言完美解決java.lang.OutOfMemoryError處理錯誤的問題Advertisement原因:常見的有以下幾種:1.記憶體中載入的資料量過於龐大,如一次從資料庫取出過多資料;2.集合類中有對物件的引用,使用完後未清空,使得JVM不能回收;3.程式碼中存在死迴圈或迴圈產生過多重複的物件實體;4.使用的第三方軟體中的BUG;5.啟動引數記憶體值設定的過小;常見錯誤提示:1.tomcat:java.lang.OutOfMemoryError:PermGenspace2.tomcat:java.lang.OutOfMemoryError:Javaheapspace3.weblogic:RootcauseofServletExceptionjava.lang.OutOfMemoryError4.resin:java.lang.OutOfMemoryError5.java:java.lang.OutOfMemoryError解決:1.應用伺服器提示錯誤的解決:把啟動引數記憶體值設定足夠大。

2.Java程式碼導致錯誤的解決:重點排查以下幾點:1)檢查程式碼中是否有死迴圈或遞迴呼叫。

2)檢查是否有大迴圈重複產生新物件實體。

3)檢查對資料庫查詢中,是否有一次獲得全部資料的查詢。

一般來說,如果一次取十萬條記錄到記憶體,就可能引起記憶體溢位。

這個問題比較隱蔽,在上線前,資料庫中資料較少,不容易出問題,上線後,資料庫中資料多了,一次查詢就有可能引起記憶體溢位。

因此對於資料庫查詢儘量採用分頁的方式查詢。

4)檢查List、MAP等集合物件是否有使用完後,未清除的問題。

List、MAP等集合物件會始終存有對物件的引用,使得這些物件不能被GC回收。

案例:1.hibernate查詢資料時,一次查詢過多的資料,後來調整了該部分的程式碼,每次只取出指定量的資料,成功的解決該問題。

2.在做壓力測試時,出現OutOfMemoryError,發現session的資源一直沒有被釋放產生的,最好通過session的invalidate()方法將session的資源釋放。

3.程式中出現死迴圈。

4.tomcat部署、執行出現OutOfMemoryError,加大記憶體引數值,解決此問題。

tomcat中java.lang.OutOfMemoryError:Javaheapspace異常處理一、HeapsizeJVM堆的設定是指java程式執行過程中JVM可以調配使用的記憶體空間的設定.JVM在啟動的時候會自動設定Heapsize的值,其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。

可以利用JVM提供的-Xmn-Xms-Xmx等選項可進行設定。

Heapsize的大小是YoungGeneration和TenuredGeneraion之和。

提示:在JVM中如果98%的時間是用於GC且可用的Heapsize不足2%的時候將丟擲此異常資訊。

提示:HeapSize最大不要超過可用實體記憶體的80%,一般的要將-Xms和-Xmx選項設定為相同,而-Xmn為1/4的-Xmx值。

二、解決方法:手動設定Heapsize修改TOMCAT_HOME/bin/catalina.sh在“echo“UsingCATALINA_BASE:  $CATALINA_BASE””上面加入以下行:JAVA_OPTS=”-server-Xms800m-Xmx800m  -XX:MaxNewSize=256m”tomcat中java.lang.OutOfMemoryError:PermGenspace異常處理一、PermGenspacePermGenspace的全稱是PermanentGenerationspace,是指記憶體的永久儲存區域,這塊記憶體主要是被JVM存放Class和Meta資訊的,Class在被Loader時就會被放到PermGenspace中,它和存放類例項(Instance)的Heap區域不同,GC(GarbageCollection)不會在主程式執行期對PermGenspace進行清理,所以如果你的應用中有很多CLASS的話,就很可能出現PermGenspace錯誤,這種錯誤常見在web伺服器對JSP進行precompile的時候。

如果你的WEBAPP下都用了大量的第三方jar,其大小超過了jvm預設的大小(4M)那麼就會產生此錯誤資訊了。

解決方法:手動設定MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh在“echo“UsingCATALINA_BASE:  $CATALINA_BASE””上面加入以下行:JAVA_OPTS=”-server-XX:PermSize=64M-XX:MaxPermSize=128m建議:將相同的第三方jar檔案移置到tomcat/shared/lib目錄下,這樣可以達到減少jar文件重複佔用記憶體的目的。

weblogic中java.lang.OutOfMemoryError異常處理錯誤提示:“RootcauseofervletExceptionjava.lang.OutOfMemoryError”解決辦法:調整bea/weblogic/common中CommEnv中引數  :sun  if“%PRODUCTION_MODE%”==“true”gotosun_prod_mode  setJAVA_VM=-client  setMEM_ARGS=-Xms256m-Xmx512m-XX:MaxPermSize=256m  setJAVA_OPTIONS=%JAVA_OPTIONS%-Xverify:none  gotocontinue  :sun_prod_mode  setJAVA_VM=-server  setMEM_ARGS=-Xms256m-Xmx512m-XX:MaxPermSize=256m  gotocontinueEclipse執行Jboss時java.lang.OutOfMemoryError:PermGenspace異常處理在Eclipse中執行Jboss時,時間太長可能有時候會出現java.lang.OutOfMemoryError:PermGenspace的錯誤,這裡給介紹大家一種解決方法:1)點選debug圖示旁邊的小箭頭;2)點選”DebugConfigurations…”選單項;3)選左邊的“GenericServer”樹下面的“JBossv4.2atlocalhost”;4)點選右邊的“Arguments”Tab頁籤,在“VMarguments”中新增:-Dprogram.name=run.bat-Djava.endorsed.dirs=”D:/JBoss405/bin/../lib/endorsed”-Xms128m-Xmx512m-XX:PermSize=64m-XX:MaxPermSize=256m5)如果你是以命令列模式或者直接點選“run.bat”來執行JBoss,那你就要在bin/run.conf檔案中對JVM選項作修改了,找到JAVA_OPTS=”-Xms128m-Xmx512m…”這一段,然後在後面加上“-XX:PermSize=64m-XX:MaxPermSize=256m”。

儲存就OK了。

6)注意:其中128、512、64和256等數字可以根據自己機器的配置來做一些相應的調整,然後點選“Apply”就可以了。

Resin下java.lang.OutOfMemoryError異常處理原因:出現這個錯誤,一般是因為JVM實體記憶體過小。

預設的Java虛擬機器最大記憶體僅為64兆,這在開發除錯過程中可能沒有問題,但在實際的應用環境中是遠遠不能滿足需要的,除非你的應用非常小,也沒什麼訪問量。

否則你可能會發現程式執行一段時間後包java.lang.OutOfMemoryError的錯誤。

因此我們需要提升resin可用的虛擬機器記憶體的大小。

解決:修改/usr/local/resin/bin/httpd.sh中的args選項新增引數-Xms(初始記憶體)和-Xmx(最大能夠使用記憶體大小)可以用來限制JVM的實體記憶體使用量。

例如:args=”-Xms128m-Xmx256m”設定後,JVM初始實體記憶體是128m,最大能使用實體記憶體為256m。

這兩個值應該由系統管理員根據伺服器的實際情況進行設定。

以上就是小編為大家帶來的完美解決java.lang.OutOfMemoryError處理錯誤的問題全部內容了,希望大家多多支援指令碼之家~目錄1.您可能感興趣的文章:您可能感興趣的文章:Java常見記憶體溢位異常分析與解決Advertisement写评论取消回覆很抱歉,必須登入網站才能發佈留言。

近期文章Spark入門(一)用SparkShell初嘗Spark滋味2019.12.08Spark入門(二)如何用Idea運行我們的Spark項目2019.12.08Spark入門(三)Spark經典的單詞統計2019.12.08Spark入門(四)Spark的map、flatMap、mapToPair2019.12.08Spark入門(五)Spark的reduce和reduceByKey2019.12.08Spark入門(六)Spark的combineByKey、sortBykey2019.12.08Spark入門(七)Spark的intersection、subtract、union和distinct2019.12.08Spark實戰尋找5億次訪問中,訪問次數最多的人2019.12.08Spark實戰搭建我們的Spark分佈式架構2019.12.08【機器學習】深度學習開發環境搭建2019.12.08AdvertisementAdvertisement



請為這篇文章評分?