日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

解决fullgc_「OOM」Java heap space原因与解决

發(fā)布時間:2024/9/18 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决fullgc_「OOM」Java heap space原因与解决 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

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

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

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

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

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

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

分配合理的足夠內(nèi)存

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

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

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

如何分配一個合理的內(nèi)存空間,是需要針對GC進行優(yōu)化的。也就是常說的JVM調(diào)優(yōu)。

JVM調(diào)優(yōu)可以參考:「JVM」GC——調(diào)優(yōu)介紹

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

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

  • 哪些對象占用了大量的堆空間
  • 在哪些代碼中創(chuàng)建了這些對象
  • 上述的問題可以通過JVM自身的jmap來dump出運行時的堆棧信息。然后通過如:MAT,JProfiler,jconsole等空間來進行內(nèi)存對象占用的跟蹤。

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

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

    Plumbr的報告信息

    以上圖的監(jiān)控舉例簡要說明一下如何適當?shù)倪M行堆空間的大小分配。

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

    • 所有相關對象的整個GCRoot引用
    • 內(nèi)存消耗最多的對象:
    • 這些對象在代碼中的分配位置:

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

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

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

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

    單位:

    -Xmx1024 即配置1024b = 1kb

    -Xmx1024k 即配置1mb

    -Xmx1024m 即配置1gb

    -Xmx1g 即配置1gb

    建議:

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

    本文由java架構筆記原創(chuàng),歡迎關注,帶你一起長知識!

    總結

    以上是生活随笔為你收集整理的解决fullgc_「OOM」Java heap space原因与解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产精品99久久久久久一二区 | 五月婷婷激情 | 性生活一区 | kk视频在线观看 | 国产不卡精品视频 | 国产激情久久久久久熟女老人av | 婷婷丁香一区二区三区 | 欧美激情图区 | 成年在线视频 | 国产欧美一区二区精品性色99 | 久久噜噜噜精品国产亚洲综合 | 最近中文字幕第一页 | 欧美一区不卡 | 美女又爽又黄视频毛茸茸 | 国产精品1000部啪视频 | 日韩久久一级片 | 亚洲精品大片www | 国产毛片精品国产一区二区三区 | 风流还珠之乱淫h文 | 三年中文在线观看中文版 | 欧美五月激情 | 欧美国产日韩在线观看 | 重口变态虐黄网站 | 93久久精品日日躁夜夜躁欧美 | 亚洲日本japanese丝袜 | ass极品国模人体欣赏 | 最新网址av| 尤物视频在线免费观看 | av中文字幕亚洲 | 成人综合在线观看 | 少妇高潮一区二区三区99小说 | 丝袜ol美脚秘书在线播放 | 少妇人妻互换不带套 | jizz美女| 国产又粗又猛又色又 | 中文字幕在线高清 | 女人18毛片水真多18精品 | 日本wwwxxxx | 99久久久国产精品无码性 | 国产不卡一二三 | 涩涩网站在线 | 国产又粗又猛又爽又黄的视频小说 | www.四虎影视.com | 亚洲最大的成人网 | 女女互磨互喷水高潮les呻吟 | 国产稀缺精品盗摄盗拍 | 意大利少妇愉情理伦片 | 国产成人精品一区二区在线观看 | 白丝av | 日韩久久久久久久久久久 | 草久久久久久 | 中文字幕国产日韩 | 国产人妖ts| 天天干夜夜拍 | 日韩大尺度在线观看 | 色牛av | 欧美精品乱码视频一二专区 | av剧情在线 | 亚洲成人伊人 | 日本视频在线观看 | 久久久一二三 | 久久久全国免费视频 | 一二三精品 | 成年网站 | 亚洲天堂第一页 | 九九五月天 | 黄色视屏在线播放 | 在线资源av | 国产午夜精品一区二区三区 | gai视频在线观看资源 | 欧美操女人 | 黄色片网站在线 | 国产精品久久亚洲 | 久久999| 欧美一区二区公司 | 狠狠干2024 | 久久久久久久国产精品 | 成人女同在线观看 | 欧美精选一区二区 | 欧美日本在线看 | 国产资源网站 | 五月天激情婷婷 | 免费看成人aa片无码视频羞羞网 | 成人黄色一级片 | 精品无码久久久久国产 | gv天堂gv无码男同在线观看 | 在线看黄免费 | 春物催眠| 成人av第一页 | 青青国产 | 天天欲色 | 男女日批 | 俺也去av | 欧洲女女同性videoso | 成人深夜免费视频 | 深夜久久久 | 久久国产精品影院 | www.欧美视频 | 伊人成人久久 |