中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何回答解決OOM類問題

發布時間:2021-12-06 10:33:27 來源:億速云 閱讀:132 作者:柒染 欄目:大數據

這期內容當中小編將會給大家帶來有關如何回答解決OOM類問題,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

上次出去劃水被問道如何快速解決線上OOM問題,由于本人菜雞一個答不是很好,因此回來查閱資料和咨詢了一下其它大佬總結了一下。

一、為什么會OOM

主要是以下兩點:

1、分配的內存少了:比如虛擬機本身可使用的內存(一般通過啟動時的VM參數指定)太少。

2、應用用的太多,并且用完沒釋放,浪費了。此時就會造成內存泄露或者內存溢出。

內存泄露:申請使用完的內存沒有釋放,導致虛擬機不能再次使用該內存,此時這段內存就泄露了,因為申請者不用了,而又不能被虛擬機分配給別人用。

內存溢出:申請的內存超出了JVM能提供的內存大小,此時稱之為溢出。

 

二、OOM的類型有哪些

按照JVM規范,除了程序計數器不會拋出OOM外,其他各個內存區域都可能會拋出OOM。

JAVA虛擬機在運行時會管理以下的內存區域:

1、程序計數器:當前線程執行的字節碼的行號指示器,線程私有。

2、JAVA虛擬機棧:Java方法執行的內存模型,每個Java方法的執行對應著一個棧幀的進棧和出棧的操作。

3、本地方法棧:類似“ JAVA虛擬機棧 ”,但是為native方法的運行提供內存環境。

4、JAVA堆:對象內存分配的地方,內存垃圾回收的主要區域,所有線程共享。可分為新生代,老生代。

5、方法區:用于存儲已經被JVM加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據。Hotspot中的“永久代”。

6、運行時常量池:方法區的一部分,存儲常量信息,如各種字面量、符號引用等。

7、直接內存:并不是JVM運行時數據區的一部分, 可直接訪問的內存, 比如NIO會用到這部分。

最常見的OOM情況有以下三種:

1、java.lang.OutOfMemoryError: Java heap spacejava

堆內存溢出,此種情況最常見,一般由于內存泄露或者堆的大小設置不當引起。對于內存泄露,需要通過內存監控軟件查找程序中的泄露代碼,而堆大小可以通過虛擬機參數-Xms,-Xmx等修改。

2、java.lang.OutOfMemoryError: PermGen spacejava

永久代溢出,即方法區溢出了,一般出現于大量Class或者jsp頁面,或者采用cglib等反射機制的情況,因為上述情況會產生大量的Class信息存儲于方法區。此種情況可以通過更改方法區的大小來解決,使用類似-XX:PermSize=64m -XX:MaxPermSize=256m的形式修改。另外,過多的常量尤其是字符串也會導致方法區溢出。

3、java.lang.StackOverflowError,不會拋OOM error,但也是比較常見的Java內存溢出。JAVA虛擬機棧溢出,一般是由于程序中存在死循環或者深度遞歸調用造成的,棧大小設置太小也會出現此種溢出。可以通過虛擬機參數-Xss來設置棧的大小。

 

三、如何分析OOM問題

分析OOM我們必須獲取dump堆的內存鏡像。

可以采用如下兩種方式:

1、設置JVM參數

-XX:+HeapDumpOnOutOfMemoryError,設定當發生OOM時自動dump出堆信息。不過該方法需要JDK5以上版本。

2、使用JDK自帶的jmap命令。"jmap -dump:format=b,file=heap.bin" 其中pid可以通過jps獲取。dump堆內存信息后,需要對dump出的文件進行分析,從而找到OOM的原因。常用的工具有:

① mat:eclipse memory analyzer, 基于eclipse RCP的內存分析工具。詳細信息參見:http://www.eclipse.org/mat/,推薦使用。

②jhat:JDK自帶的java heap analyze tool,可以將堆中的對象以html的形式顯示出來,包括對象的數量,大小等等,并支持對象查詢語言OQL,分析相關的應用后,可以通過http://localhost:7000來訪問分析結果。不推薦使用,因為在實際的排查過程中,一般是先在生產環境 dump出文件來,然后拉到自己的開發機器上分析,所以,不如采用高級的分析工具,如前面的mat來的高效。

網上這個鏈接:https://0x9.me/c9jS1中提供了一個采用mat分析的例子 。

注意:因為JVM規范沒有對dump出的文件的格式進行定義,所以不同的虛擬機產生的dump文件并不是一樣的。在分析時,需要針對不同的虛擬機的輸出采用不同的分析工具(當然,有的工具可以兼容多個虛擬機的格式)。IBM HeapAnalyzer也是分析heap的一個常用的工具。

上述就是小編為大家分享的如何回答解決OOM類問題了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

oom
AI

西和县| 巴青县| 鲁甸县| 祁阳县| 富宁县| 韶关市| 双城市| 三原县| 府谷县| 怀安县| 赤峰市| 蚌埠市| 盱眙县| 宁都县| 江城| 天全县| 刚察县| 新民市| 定南县| 平邑县| 永宁县| 邓州市| 庆阳市| 成安县| 咸丰县| 青海省| 尉犁县| 大方县| 千阳县| 陆川县| 辽中县| 巍山| 纳雍县| 诏安县| 昌图县| 武清区| 麟游县| 原阳县| 邯郸县| 会理县| 石景山区|