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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

android oom工具,Android OOM-Heap,MAT工具检测内存泄露

發(fā)布時(shí)間:2025/3/11 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android oom工具,Android OOM-Heap,MAT工具检测内存泄露 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概述

在android的開發(fā)中,要時(shí)刻主要內(nèi)存的分配和垃圾回收,因?yàn)橄到y(tǒng)為每一個(gè)dalvik虛擬機(jī)分配的內(nèi)存是有限的,在google的G1中,分配的最大堆大小只有16M,后來的機(jī)器一般都為24M,實(shí)在是少的可憐。這樣就需要我們?cè)陂_發(fā)過程中要時(shí)刻注意。不要因?yàn)樽约旱拇a問題而造成OOM錯(cuò)誤。

JAVA的內(nèi)存管理

大家都知道,android應(yīng)用層是由java開發(fā)的,android的davlik虛擬機(jī)與jvm也類似,只不過它是基于寄存器的。因此要了解android的內(nèi)存管理就必須得了解java的內(nèi)存分配和垃圾回收機(jī)制。

在java中,是通過new關(guān)鍵字來為對(duì)象分配內(nèi)存的,而內(nèi)存的釋放是由垃圾收集器(GC)來回收的,工程師在開發(fā)的過程中,不需要顯式的去管理內(nèi)存。但是這樣有可能在不知不覺中就會(huì)浪費(fèi)了很多內(nèi)存,最終導(dǎo)致java虛擬機(jī)花費(fèi)很多時(shí)間去進(jìn)行垃圾回收,更嚴(yán)重的是造成JVM的OOM。因此,java工程師還是有必要了解JAVA的內(nèi)存分配和垃圾回收機(jī)制。

內(nèi)存結(jié)構(gòu)

上面這張圖是JVM的結(jié)構(gòu)圖,它主要四個(gè)部分組成:Class Loader子系統(tǒng)和執(zhí)行引擎,運(yùn)行時(shí)方法區(qū)和本地方法區(qū),我們主要來看下RUNTIMEDATA AREA區(qū),也就是我們常說的JVM內(nèi)存。從圖中可以看出,RUNTIMEDATA AREA區(qū)主要由5個(gè)部分組成:

Method Area:被裝載的class的元信息存儲(chǔ)在Method Area中,它是線程共享的

Heap(堆):一個(gè)java虛擬機(jī)實(shí)例中只存在一個(gè)堆空間,存放一些對(duì)象信息,它是線程共享的

Java棧:java虛擬機(jī)直接對(duì)java棧進(jìn)行兩種操作,以幀為單位的壓棧和出棧(非線程共享)

程序計(jì)數(shù)器(非線程共享)

本地方法棧(非線程共享)

JVM的垃圾回收(GC)

JVM的垃圾原理是這樣的,它把對(duì)象分為年輕代(Young)、年老代(Tenured)、持久代(Perm),對(duì)不同生命周期的對(duì)象使用不同的垃圾回收算法。

年輕代(Young)

年輕代分為三個(gè)區(qū),一個(gè)eden區(qū),兩個(gè)Survivor區(qū)。程序中生成的大部分新的對(duì)象都在Eden區(qū)中,當(dāng)Eden區(qū)滿時(shí),還存活的對(duì)象將被復(fù)制到其中一個(gè)Survivor區(qū),當(dāng)此Survivor區(qū)的對(duì)象占用空間滿了時(shí),此區(qū)存活的對(duì)象又被復(fù)制到另外一個(gè)Survivor區(qū),當(dāng)這個(gè)Survivor區(qū)也滿了的時(shí)候,從第一個(gè)Survivor區(qū)復(fù)制過來的并且此時(shí)還存活的對(duì)象,將被復(fù)制到年老代。

年老代(Tenured)

年老代存放的是上面年輕代復(fù)制過來的對(duì)象,也就是在年輕代中還存活的對(duì)象,并且區(qū)滿了復(fù)制過來的。一般來說,年老代中的對(duì)象生命周期都比較長。

持久代(Perm)

用于存放靜態(tài)的類和方法,持久代對(duì)垃圾回收沒有顯著的影響。

Android中內(nèi)存泄露監(jiān)測

在了解了JVM的內(nèi)存管理后,我們?cè)倩剡^頭來看看,在android中應(yīng)該怎樣來監(jiān)測內(nèi)存,從而看在應(yīng)用中是否存在內(nèi)存分配和垃圾回收問題而造成內(nèi)存泄露情況。

在android中,有一個(gè)相對(duì)來說還不錯(cuò)的工具,可以用來監(jiān)測內(nèi)存是否存在泄露情況:DDMS—Heap

使用方法比較簡單:

選擇DDMS視圖,并打開Devices視圖和Heap視圖

點(diǎn)擊選擇要監(jiān)控的進(jìn)程,比如:上圖中我選擇的是system_process

選中Devices視圖界面上的"update heap"圖標(biāo)

點(diǎn)擊Heap視圖中的"Cause GC"按鈕(相當(dāng)于向虛擬機(jī)發(fā)送了一次GC請(qǐng)求的操作)

在Heap視圖中選擇想要監(jiān)控的Type,一般我們會(huì)觀察dataobject的total size的變化,正常情況下total size的值會(huì)穩(wěn)定在一個(gè)有限的范圍內(nèi),也就說程序中的代碼良好,沒有造成程序中的對(duì)象不被回收的情況。如果代碼中存在沒有釋放對(duì)象引用的情況,那么data object的total size在每次GC之后都不會(huì)有明顯的回落,隨著操作次數(shù)的增加而total size也在不斷的增加。(說明:選擇好data object后,不斷的操作應(yīng)用,這樣才可以看出total size的變化)。如果totalsize確實(shí)是在不斷增加而沒有回落,說明程序中有沒有被釋放的資源引用。那么我們應(yīng)該怎么來定位呢?

Android中內(nèi)存泄露定位

Mat(memory analyzer tools)是我們常用的用來定位內(nèi)存泄露的工具,如果你使用ADT,并且安裝了MAT的eclipse插件,你需要做的是進(jìn)入DDMS視圖的Devices視圖:

點(diǎn)擊"dump HPROF file"按鈕,然后使用MAT分析下載下來的文件。

下面列出了存在的問題,點(diǎn)擊detail進(jìn)去,會(huì)列出詳細(xì)的,可能會(huì)存在問題的代碼:

關(guān)于MAT的使用可以參考:

這位兄弟寫的比較詳細(xì)。

總結(jié)

不管是java還是android,都應(yīng)該了解內(nèi)存分配和垃圾回收機(jī)制,工程師要做到寫的代碼中沒有bad code很難,關(guān)鍵是在出現(xiàn)問題的時(shí)候該怎么去排查。

總結(jié)

以上是生活随笔為你收集整理的android oom工具,Android OOM-Heap,MAT工具检测内存泄露的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久久精品视频免费观看 | 欧美手机在线观看 | 日日操夜夜操狠狠操 | 欧美日b片 | 中文一二三区 | 青青草黄色 | 亚洲视频免费在线 | 欧美少妇15p | 四虎影院国产精品 | 欧美操穴| 五月婷婷七月丁香 | 国产剧情在线观看 | 欧美精品免费播放 | 波多野吉衣久久 | 在线免费观看成年人视频 | 亚洲天堂自拍 | 国内精品久久久久久久 | 久久久噜噜噜久久 | 秋霞一区二区三区 | 国产三级视频在线播放 | av 日韩 人妻 黑人 综合 无码 | 成人手机av | 久久久伦理片 | 调教亲女小嫩苞h文小说 | 中文字幕高清视频 | 丰满人妻av一区二区三区 | 看中国毛片 | 中文字幕无码乱码人妻日韩精品 | 久久久免费精品 | 国产精品久久久久精 | 亚洲高清自拍 | 亚洲色成人网站www永久四虎 | 都市激情亚洲综合 | 超碰888| 亚洲精品视频久久 | 91啪国产在线 | 水蜜桃影库 | 高h捆绑拘束调教小说 | 久久久久久亚洲 | av最新版天堂资源在线 | 波多野结衣亚洲一区 | 精品久久国产字幕高潮 | 奇米影视av | 中国女人黄色大片 | 69av视频在线 | 精品国产精品网麻豆系列 | 欧美十大老熟艳星 | 中文字幕色图 | av导航在线观看 | 动漫美女露胸网站 | 亚洲成熟女性毛茸茸 | 欧美性xxxxx极品娇小 | 四虎影视永久地址 | 久久伊人色| 国产av一区二区三区 | 色姑娘综合 | 人人干天天操 | 精品一区二区成人免费视频 | 亚洲天堂手机在线观看 | 黄色av网页 | 综合第一页 | 亚洲成人av电影网站 | 国产精品专区在线观看 | 成年人午夜视频 | 插我一区二区在线观看 | 伊人国产在线视频 | 大乳丰满人妻中文字幕日本 | 美女91网站 | 久久躁日日躁aaaaxxxx | 国产福利免费视频 | 污视频在线 | 别揉我奶头一区二区三区 | 国产精品久久久久久免费 | 狠狠撸狠狠干 | 欧美激情自拍 | 国产在线精品一区 | 亚洲天堂精品在线 | 无码国精品一区二区免费蜜桃 | 中文日韩av | 日本不卡二区 | 国产成人福利 | 奇米在线| 超碰在线最新 | 亚洲av成人无码一区二区三区在线观看 | 亚洲中文无码久久 | 日韩欧美中文字幕在线视频 | 欧美成人怡红院 | 亚洲xxxx视频 | 99视频网址 | 欧美视频第一页 | 亚洲 欧美 日韩 国产综合 在线 | 色屁屁www | av观看国产 | jizz欧美性23 | 久久午夜夜伦鲁鲁片无码免费 | 黄色美女大片 | 日本美女黄网站 | 日韩亚洲欧美在线 | 精品国产999 |