1. 程式人生 > >OOM的出現及解決(載入圖片)

OOM的出現及解決(載入圖片)

oom: Android(Java)中常見的容易引起記憶體洩漏的不良程式碼 Android主要應用在嵌入式裝置當中,而嵌入式裝置由於一些眾所周知的條件限制,通常都不會有很高的配置,特別是記憶體是比較有限的。如果我們編寫的程式碼當中有太多的對記憶體使用不當的地方,難免會使得我們的裝置執行緩慢,甚至是宕機。為了能夠使得Android應用程式安全且快速的執行,Android 的每個應用程式都會使用一個專有的Dalvik虛擬機器例項來執行,它是由Zygote服務程序孵化出來的,也就是說每個應用程式都是在屬於自己的程序中執行的。一方面,如果程式在執行過程中出現了記憶體洩漏的問題,僅僅會使得自己的程序被kill掉,而不會影響其他程序(如果是system_process 等系統程序出問題的話,則會引起系統重啟)。另一方面Android為不同型別的程序分配了不同的記憶體使用上限,如果應用程序使用的記憶體超過了這個上限, 則會被系統視為記憶體洩漏,從而被kill掉。 (2)結論是記憶體不夠用就叫oom.      Android裝置記憶體一般比較小,容易引起oom.      Android每個應用程式在專有的Dalvik虛擬機器例項中執行,Android分配固定記憶體。超出分配的記憶體,引起oom,系統KILL掉,程式結束。      Android系統程序OOM,機器重啟。 記憶體洩漏:明明沒有用。還回收不了,佔用記憶體; 記憶體溢位: 解決OOM問題的程式碼思路:(壓縮比就是取樣率 )
1:得到(圖片)的寬高資訊, 建立一個圖片資訊類的物件,傳入獲取圖片資訊的檔案,filename:string型別
獲得寬高 0是預設
2:獲取(螢幕)的寬高資訊, 建立一個視窗管理類物件,通過靜態方法 getsystemservice,呼叫系統底層獲取視窗物件
通過輸出打印發現 螢幕的寬高(小於)圖片的寬高 就會出現OOM異常 3:開始解決 通過 圖片的寬高 以及 螢幕的寬高 去得到一個壓縮比的值
建立預設的壓縮比值 進行判斷 //scale:壓縮比
4:載入一個圖片到記憶體中,顯示到ImageView上