内存泄露严重吗_内存泄漏–测量频率和严重性
內存泄露嚴重嗎
這篇文章是我們開放文化的一部分-我們將繼續分享日常工作中的見解。 這次,我們窺視了我們價值主張的核心,即–尋找以下問題的答案:
- Java應用程序中內存泄漏多久發生一次?
- 內存泄漏有多大?
- 內存泄漏增長多快?
如果您接下來的幾分鐘與我在一起,我將根據過去六個月中Plumbr內存泄漏檢測器代理收集的數據,一個一個地打開答案。
首先,該分析基于與Plumbr代理一起運行的2,180種不同應用程序 。 “不同的應用程序”的定義有些棘手,我為您省去了世俗的細節,但是我們盡力根據可用數據確定唯一的JVM。
在這2180個應用程序中, Plumbr發現了754種不同的堆內存泄漏 。 由于某些應用程序包含多個內存泄漏,因此檢測到泄漏的唯一應用程序的數量要少一些-準確地說是682。 根據這些數據,我們可以得出結論: 31%的Java應用程序包含堆內存泄漏 。 對此一針見血–我們確實承認,Plumbr最終監視的應用程序比我們不監視的應用程序更可能包含內存泄漏。
現在,知道您的應用程序中發生堆內存泄漏的可能性大約為三分之一,讓我們看看您是否應該擔心泄漏。 為此,讓我們看一下這754個堆內存泄漏的兩個不同特征。
內存泄漏大小
當Plumbr發現內存泄漏時,它將運行復雜的計算以確定泄漏的保留大小。 或者,以更簡單的方式– Plumbr計算特定泄漏的大小(以兆字節為單位)。 該數據在下表中可見:
從數據中我們可以看到,Plumbr在嬰兒期就檢測到許多泄漏-例如,它已發現187個泄漏(占總泄漏的25%),而在發現時泄漏仍小于1MB 。 在另一種極端情況下,檢測到一些泄漏需要更長的時間,因此在31種情況下,只有在泄漏到1GB后才檢測到泄漏。 在發現之前,最大的泄漏已設法升級到3GB。
從上面得出的另一個有趣的結論是,大多數泄漏是在應用程序的最終用戶感受到任何影響之前被Plumbr捕獲的-在Plumbr報告泄漏為事件時,泄漏的70%仍小于100MB。
內存泄漏速度
現在,應用程序包含的泄漏占用不到100MB的事實不再需要采取任何措施。 將泄漏的大小與泄漏的速度耦合起來,事件的嚴重性變得更加清楚:
上圖的信息可以這樣解釋:對于6%(37次出現)的情況,發現時的泄漏速度在100到500 MB /小時之間。
在極端情況下,我們的泄漏速度非常慢或非常快。 在398次(發現泄漏的53%)中,泄漏以每小時1MB或更少的速度遞增。 在頻譜的另一端,我們有31次泄漏以每小時1GB或更快的速度不斷上升 。 在這方面,“記錄保存者”每小時的泄漏量超過3GB。
將速度信息與應用程序當前的泄漏大小和最大堆結合起來,您可以使用OutOfMemoryError估計特定應用程序在崩潰前所剩下的時間。
上周五的一個特定示例:Plumbr報告了一次泄漏大小為120MB的事件。 泄漏速度為每天160MB。 將這些信息與當前的堆使用情況和可用的最大堆鏈接在一起,我們可以預測到特定的JVM將在星期二下午2點之前消失。 我們錯了六個小時,如果考慮到應用程序使用模式會隨著時間的推移而發生變化,這是預測游戲的一部分,那么這個預測就足夠接近了。
翻譯自: https://www.javacodegeeks.com/2014/09/memory-leaks-measuring-frequency-and-severity.html
內存泄露嚴重嗎
總結
以上是生活随笔為你收集整理的内存泄露严重吗_内存泄漏–测量频率和严重性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓友盟推送(安卓友盟)
- 下一篇: HATEOAS的RESTful服务。 记