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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

App性能优化之内存优化

發(fā)布時(shí)間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 App性能优化之内存优化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

為什么要進(jìn)行內(nèi)存優(yōu)化呢?其實(shí)我們可以反過來想。如果不進(jìn)行內(nèi)存優(yōu)化會(huì)產(chǎn)生什么樣的問題?

App的運(yùn)行是有內(nèi)存限制的,超過限制會(huì)產(chǎn)生OOM,導(dǎo)致App崩潰。如果內(nèi)存不進(jìn)行優(yōu)化,運(yùn)行的內(nèi)存一旦超出了這個(gè)限制,就會(huì)導(dǎo)致程序的崩潰。程序的崩潰對(duì)于應(yīng)用程序來說是一個(gè)非常嚴(yán)重的。如果App不進(jìn)行內(nèi)存優(yōu)化,在流暢性、響應(yīng)速度和用戶體驗(yàn)上都會(huì)有很差的效果。

首先,我們來看一下內(nèi)存的管理方式。

1、Android系統(tǒng)的內(nèi)存分配和回收方式。

一個(gè)App通常就是一個(gè)進(jìn)程對(duì)應(yīng)一個(gè)虛擬機(jī)。GC只在heap剩余空間不足時(shí),才會(huì)進(jìn)行垃圾回收。GC觸發(fā)時(shí),所有的線程都會(huì)被暫停。

2、App內(nèi)存限制機(jī)制。

每個(gè)App分配的最大內(nèi)存限制,隨著不同的設(shè)備而不同。吃內(nèi)存大戶是圖片。App中用到的圖片也很多。為什么要限制內(nèi)存呢?我們的手機(jī)上有很多個(gè)應(yīng)用。如果一個(gè)App把內(nèi)存用光了,別的App就沒有辦法運(yùn)行了。為了避免這種情況的出現(xiàn),我們必須要限制App的內(nèi)存。

3、切換應(yīng)用時(shí)后臺(tái)App清理機(jī)制。

App切換時(shí)的LRU Cache的方式進(jìn)行應(yīng)用間的切換。清理的時(shí)候系統(tǒng)會(huì)調(diào)用onTrimMemory()回調(diào)方法。

4、監(jiān)控內(nèi)存的幾種方法。

其次,App內(nèi)存的優(yōu)化方法。

1、數(shù)據(jù)結(jié)構(gòu)優(yōu)化。

頻繁字符串拼接用StringBuilder。ArrayMap、SparseArray替換HashMap。內(nèi)存抖動(dòng)。再小的class也要消耗0.5kb。HashMap一個(gè)entry需要額外占用32b。

2、對(duì)象復(fù)用。

復(fù)用系統(tǒng)自帶的資源。ListView和GridView 的ConverView復(fù)用。避免在onDraw方法里執(zhí)行對(duì)象的創(chuàng)建。

3、什么是內(nèi)存泄漏,及其應(yīng)對(duì)方法。

在邏輯上,某個(gè)內(nèi)存塊已經(jīng)不用了。由于代碼上的失誤導(dǎo)致這塊內(nèi)存雖然停止不用了,但是依然被其他東西占用,使得GC無法對(duì)它進(jìn)行回收。

內(nèi)存泄漏會(huì)導(dǎo)致可用的Heap越來越少,頻繁觸發(fā)GC。尤其是Activity泄漏。用Application Context而不是Activity Context。注意Cursor對(duì)象是否及時(shí)關(guān)閉。

最后,OOM問題優(yōu)化。

1、OOM問題分析。

必然性和可解決性。OOM絕大部分出現(xiàn)在圖片上。

2、強(qiáng)引用、軟引用的意義。

3、優(yōu)化OOM問題的方法。

注意臨時(shí)Bitmap對(duì)象的及時(shí)回收。避免BitMap的浪費(fèi)。Try catch某些大內(nèi)存的分配。加載Bitmap時(shí)候縮放比例、解碼格式、局部加載。

轉(zhuǎn)載于:https://my.oschina.net/u/2971691/blog/877169

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的App性能优化之内存优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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