JVM內存泄露(OOM)!帶你一一揭祕【第一彈】

咱們將分紅屢次介紹內存泄露OOM的內容,大體套路爲現象、緣由、解決方案。簡單清晰,不玩高大上。記得給轉發一下,哈哈java


OOM最典型的表現:java.lang.OutOfMemoryError,你記住了嗎?編程


1 OOM的現象之一app

今天介紹第一種Java heap spaceide


2 什麼緣由形成的?優化

1)應用程序嘗試添加更多的數據放入堆空間,但沒有足夠的空間供它,當JVM達到堆大小限制時,都會引起Java堆空間錯誤spa


2)數據量激增。當用戶數量或數據量忽然達到峯值並超過預期閾值時,在峯值以前正常運行的操做將中止運行並觸發java.lang.OutOfMemoryError: Java heap space。orm


3)內存泄漏。很差編程代碼錯誤將致使你的應用程序不斷消耗更多的內存。每次都會將某些對象留在Java堆空間中。長此以往,泄漏的對象會消耗全部可用的Java堆空間。對象


3 怎麼解決和避免呢?內存

1)分配合理的內存給JVM的堆。ci


2)可是,在許多狀況下,提供更多的Java堆空間將沒法解決問題。例如,若是應用程序包含內存泄漏,即便添加更多的堆只會推遲錯誤。此外,增長Java堆空間的數量也每每會增長GC暫停的時間,從而影響應用程序的吞吐量或延遲。


3)若是但願解決Java堆空間的根本問題而不是掩蓋症狀,則須要弄清楚代碼的哪一部分負責分配最多的內存。換句話說,你須要清楚哪些對象佔據堆的大部分空間並想辦法優化他們


好了,今天就到這裏,第二彈明天見面~

相關文章
相關標籤/搜索