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