亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

OOM有什么用

發布時間:2021-11-03 11:18:31 來源:億速云 閱讀:151 作者:小新 欄目:編程語言

這篇文章主要介紹了OOM有什么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一、OOM含義:

OOM,全稱“Out Of Memory”,意思是“內存用完了”。 它來源于java.lang.OutOfMemoryError。   

二、為什么會出現java.lang.OutOfMemoryError:即OOM:

官方介紹為當JVM因為沒有足夠的內存來為對象分配空間并且垃圾回收器也已經沒有空間可回收時,就會拋出 java.lang.OutOfMemoryError :··· (注意:這是個很嚴重的問題,因為這個問題已經嚴重到不足以被應用處理)。  

具體原因大致為兩方面:

1、自身原因:比如虛擬機本身可使用的內存太少。

2、外在原因:如應用使用的太多,且用完沒釋放,浪費了內存。此時就會造成內存泄露或者內存溢出。

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

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

三、OOM的error類型

首先說一下JAVA虛擬機運行時會管理的內存區域吧:

1. 程序計數器:當前線程執行的字節碼的行號指示器,線程私有
2. JAVA虛擬機棧:Java方法執行的內存模型,每個Java方法的執行對應著一個棧幀的進棧和出棧的操作。
3. 本地方法棧:類似“ JAVA虛擬機棧 ”,但是為native方法的運行提供內存環境。
4. JAVA堆:對象內存分配的地方,內存垃圾回收的主要區域,所有線程共享。可分為新生代,老生代。
5. 方法區:用于存儲已經被JVM加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據。Hotspot中的“永久代”。
6. 運行時常量池:方法區的一部分,存儲常量信息,如各種字面量、符號引用等。
7. 直接內存:并不是JVM運行時數據區的一部分, 可直接訪問的內存, 比如NIO會用到這部分。

所以除了程序計數器不會拋出OOM外,其他各個內存區域都可能會拋出OOM。

常見OOM情況:

1. java.lang.OutOfMemoryError: Java heap space ------>java堆內存溢出,此種情況最常見,一般由于內存泄露或者堆的大小設置不當引起。對于內存泄露,需要通過內存監控軟件查找程序中的泄露代碼,而堆大小可以通過虛擬機參數-Xms,-Xmx等修改。
2. java.lang.OutOfMemoryError: PermGen space ------>java永久代溢出,即方法區溢出了,一般出現于大量Class或者jsp頁面,或者采用cglib等反射機制的情況,因為上述情況會產生大量的Class信息存儲于方法區。當出現此種情況時可以通過更改方法區的大小來解決,使用類似-XX:PermSize=64m -XX:MaxPermSize=256m的形式修改。注意,過多的常量尤其是字符串也會導致方法區溢出。
3. java.lang.StackOverflowError ------> 不會拋OOM error,但也是比較常見的Java內存溢出。JAVA虛擬機棧溢出,一般是由于程序中存在死循環或者深度遞歸調用造成的,棧大小設置太小也會出現此種溢出。可以通過虛擬機參數-Xss來設置棧的大小。

四、OOM分析

Heap Dump(堆轉儲文件)它是一個Java進程在某個時間點上的內存快照。Heap Dump是有著多種類型的。不過總體上heap dump在觸發快照的時候都保存了java對象和類的信息。通常在寫heap dump文件前會觸發一次FullGC,所以heap dump文件中保存的是FullGC后留下的對象信息。

通過設置如下的JVM參數,可以在發生OutOfMemoryError后獲取到一份HPROF二進制Heap Dump文件: 

-XX:+HeapDumpOnOutOfMemoryError

生成的文件會直接寫入到工作目錄。  

注意:該方法需要JDK5以上版本。 

轉存堆內存信息后,需要對文件進行分析,從而找到OOM的原因。可以使用以下方式:

mat: eclipse memory analyzer, 基于eclipse RCP的內存分析工具。具體使用參考:http://www.eclipse.org/mat/,推薦使用。   

jhat:JDK自帶的java heap analyze tool,可以將堆中的對象以html的形式顯示出來,包括對象的數量,大小等等,并支持對象查詢語言OQL,分析相關的應用后,可以通過http://localhost:7000來訪問分析結果。不推薦使用。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“OOM有什么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

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

oom
AI

灵台县| 绿春县| 永顺县| 边坝县| 红桥区| 五常市| 娄烦县| 六盘水市| 柳河县| 都江堰市| 建湖县| 林芝县| 七台河市| 定兴县| 武陟县| 巧家县| 齐齐哈尔市| 道真| 岱山县| 隆安县| 张掖市| 吉林省| 政和县| 临桂县| 福贡县| 新津县| 邹平县| 泰和县| 徐汇区| 赤城县| 晴隆县| 大安市| 冀州市| 雅江县| 松阳县| 泽普县| 雅安市| 天台县| 湾仔区| 宁都县| 怀化市|