青青草免费线看线看|啊在车上停不下来了|国产少女免费观看电视剧|仑乱88MAV|精品老司机在线观看视频|国产一区二区三区高清免费视频|在线观看免费777av

android性能優(yōu)化和內存優(yōu)化 android弱引用有哪些


1、Android內存管理機制 1.1 Java內存分配模型 【android性能優(yōu)化和內存優(yōu)化 android弱引用有哪些】先上一張JVM將內存劃分區(qū)域的圖
程序計數(shù)器:存儲當前線程執(zhí)行目標方法執(zhí)行到第幾行 。
棧內存:Java棧中存放的是一個個棧幀 , 每個棧幀對應一個被調用的方法 。棧幀包括局部標量表 ,
操作數(shù)棧 。
本地方法棧:本地方法棧主要是為執(zhí)行本地方法服務的 。而Java棧是為執(zhí)行Java方法服務的 。
方法區(qū):該區(qū)域被線程共享 。主要存儲每個類的信息(類名 , 方法信息 , 字段信息等)、靜態(tài)變量 , 常量 , 以及編譯器編譯后的代碼等 。
堆:Java中的堆是被線程共享的 , 且JVM中只有一個堆內存 , 主要存儲對象本身及數(shù)組
1.2 Dalvik和ART介紹 Dalvik:Dalvik是Google公司自己設計用于Android平臺的Java虛擬機 。它可以支持已轉換為.dex格式的Java應用程序的運行 , .dex格式是專門為Dalvik應用設計的一種壓縮格式 , 適合內存和處理器速度有限的系統(tǒng) , Dalvik經過優(yōu)化 , 允許在有限的內存中同時運行多個虛擬機實例 , 并且每一個Dalvik應用做為獨立的Linux進程執(zhí)行 , 獨立的進程可以防止在虛擬機崩潰的時候所有程序都被關閉 。
ART:ART表示Android Runtime , Dalvik是依靠一個just-In -Time編譯器去解釋字節(jié)碼 , 運行時編譯后的應用都需要通過一個解釋器在用戶的設備上運行 , 這一機制并不是特別高效 , 但是能讓應用更容易在不同的硬件和架構上運行 。ART則是完全改變了這種做法 , 在安裝應用的時候就預編譯字節(jié)碼到機器語言 , 這一機制叫預編譯 。在移除解釋代碼這一過程 , 應用程序執(zhí)行將更有效率 , 啟動速度更快 。
ART優(yōu)點:
1.系統(tǒng)性能更高
2.應用啟動速度 , 運行更快 , 體驗更好 , 觸感反饋更加及時 。
3.更長的電池續(xù)航能力
4.支持更低的硬件
ART缺點:
1.儲存空間占用更大 。
2.應用安裝時間更長 。
Dalvik與ART區(qū)別
1.Dalvik每次都要編譯在運行 , art只會安裝時啟動編譯
2.art占用的空間比Dalvik要大 , 就是用空間換時間
3.art減少編譯 , 減少CPU使用頻率 , 使用明顯改善電池續(xù)航
4.art啟動 , 運行更快 , 體驗更好 , 觸感反饋更及時 。
1.3 為什么要進行內存優(yōu)化 1.減少oom,提高應用的穩(wěn)定性
2.減少卡頓 , 體驗更好
3.減少內存占用 , 應用存活率更高
4.提前處理掉一些異常的隱患
2、Java內存回收算法 2.1判斷Java中對象是否存活的算法 2.1.1 引用計數(shù)算法 堆內存的每個對象都有一個引用計數(shù)器 , 當對象被引用的時候 , 計數(shù)器 1 , 當引用失效時計數(shù)器-1 , 當計數(shù)器的值為0時 , 說明該對象沒有被引用 , 就會被認為是垃圾對象 , 系統(tǒng)將會將其回收內存重新分配 。

猜你喜歡