JVM內存java
Heap: Eden Space Survivor Space Old Gen NonHeap: Code Cache Metaspace Compressed Class Space
PC程序計數器是JVM運行時數據區 Runtime Data Area 惟一沒有OOM的區域;數組
發生OOM時,一般會指明,發生異常的區域,如:源碼分析
Exception in thread thread_name:java.lang.OutOfMemoryError:[1-8]
- Xmx 堆內存 最大值 - Xms 堆內存 初始值
1.增長參數,-XX:-UseGCOverheadLimit,關閉這個特性,同時增長heap大小,-Xmx1024m。 2.排查並優化消耗內存資源代碼.
- XX:PermSize 持久代 初始值 - XX:MaxPermSize 持久代 最大值
棧溢出; 每一個線程都有私有棧內存,當調用一個方法時,都會建立棧楨,放入棧中; 若是調用方法足夠多,超過棧最大深度,就會拋出StackOverflowError; 畢竟有出現異常的就是遞歸深度過深 或 循環調用; 若代碼無異常,可嘗試調整棧內存大小; 棧幀:能夠理解爲方法在運行時的數據集,主要包括局部變量表、操做數棧、動態連接、方法出口、附加信息。