日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

JVM的OOM分為多種情況,下面會針對JAVA.lang.OutOfMemoryError: Java heap space這種情況講解一下發生的原因與解決方案。

在JAVA應用啟動時,會限制應用的使用空間。也就說,任何一個JAVA應用,都只能使用有限的內存空間。

JAVA的內存空間在JDK7及以前劃分為堆與永久代。在JDK8之后移除了永久代,采用元空間來代替。

在啟動時,通過指定JVM參數:`-Xmx` 來設置可使用的最大堆大小。如果沒有顯式的設置,則系統上默認為物理內存的1/4(根據物理內存的不同情況有不同的分配規則。但是普遍可以認為是1/4)。

發生java.lang.OutOfMemoryError: Java heap space異常時,代表著應用嘗試從堆上申請一個區域時,堆沒有可配的空間。(注:可能有可使用的物理內存,但是沒有已經達到了JAVA應用可分配的內存大小)

JVM是很智能的,在即將發生OOM時,會進行一次FullGC以回收可回收的對象來釋放空間。如果FullGC之后還是沒有可滿足大小的空間分配,才拋出java.lang.OutOfMemoryError: Java heap space。

java.lang.OutOfMemoryError: Java heap space正常是怎么發生的呢?

  • 突發高峰期:程序在正常的用戶量和一定數據量時運行正常。但是,在某個高峰時導致超出預期閾值,內存存活對象使用空間的量超出最大堆,并且無法回收。
  • 內存泄露: 由于編程錯誤導致應用程序不再需要的對象(數據)一直被持有引用,導致無法被回收。隨著時間的推移,泄露的內存對象占用了所有的可用堆空間。

分配合理的足夠內存

最簡單的解決方法就給JVM分配足夠大的內存來滿足運行程序的需求。

但是,需要注意在內存泄漏的情況下,分配再大的內存也只是推遲了java.lang.OutOfMemoryError: Java heap space的發生。

而且,加大了JVM堆內存,也會增加在GC時的暫停時間(STW),影響程序的吞吐量,增加延遲。

如何分配一個合理的內存空間,是需要針對GC進行優化的。也就是常說的JVM調優。

JVM調優可以參考:「JVM」GC——調優介紹

那么,如何調整通過分配JAVA堆空間來解決問題呢?

首先,需要了解以下這些問題:

  1. 哪些對象占用了大量的堆空間
  2. 在哪些代碼中創建了這些對象

上述的問題可以通過JVM自身的jmap來dump出運行時的堆棧信息。然后通過如:MAT,JProfiler,jconsole等空間來進行內存對象占用的跟蹤。

MAT使用可以參考:[JVM] MAT進階使用

當然,這種方式是比較原始的方式。建議通過如:Plumbr等JVM監控工具來跟蹤問題。

「OOM」Java heap space原因與解決

Plumbr的報告信息

以上圖的監控舉例簡要說明一下如何適當的進行堆空間的大小分配。

上圖所示中,可以得到如下信息:

  • 所有相關對象的整個GCRoot引用
  • 內存消耗最多的對象:
「OOM」Java heap space原因與解決

 

  • 這些對象在代碼中的分配位置:
「OOM」Java heap space原因與解決

 

根據上述的信息, 我們可以得到這樣的猜想:

這個程序的需要的運行空間超過248MB,并且是無法在一定時間內釋放被回收。那么,按JVM調優的思路,建議分配的最大堆大小為:老年代活躍數據大小 * 3~4倍。

所以,我們第一次調整時,可以分配:248 * 4 = 992。

由于堆大小的無法確認,所以第一次調整直接調整為:-Xmx1024m。

單位:

-Xmx1024 即配置1024b = 1kb

-Xmx1024k 即配置1mb

-Xmx1024m 即配置1gb

-Xmx1g 即配置1gb

建議:

在配置-Xmx時,應該將-Xms也配置成相同大小。避免JVM需要動態調整堆空間大小帶來的性能影響。

分享到:
標簽:Java heap space
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定