優化記憶體的一些小細節

2021-07-11 03:18:49 字數 1044 閱讀 4977

摘自

1.迴圈中物件占用記憶體大

這個問題常見於迴圈次數較大,迴圈體生成的物件占用記憶體較大的情景。

例子**:我需要10000個演員來打仗

1

2

3

4

for(int i = 0; i < 10000; i ++)

該迴圈內產生大量的臨時物件,直至迴圈結束才釋放,可能導致記憶體洩漏,解決方法和上文中提到的自動釋放池常見問題類似:在迴圈中建立自己的autoreleasepool,及時釋放占用記憶體大的臨時變數,減少記憶體占用峰值。

1

2

3

4

5

6

for(int i = 0; i < 10000; i ++)

}

然而有時候autoreleasepool也不是萬能的:

例子:假如有2000張,每張1m左右,現在需要獲取所有的尺寸,你會怎麼做?

如果這樣做

1

2

3

4

for(int i = 0; i < 2000; i ++)

用imagenamed方法載入占用cache的記憶體,autoreleasepool也不能釋放,對此問題需要另外的解決方法,當然保險的當然是雙管齊下了

1

2

3

4

5

6

for(int i = 0; i < 2000; i ++)

}

以後有其他收穫,會隨時補充

一些小細節

1 c中printf計算引數時是從右到左壓棧的。定義乙個陣列 int arr 再定義乙個指標 sint prt arr printf d n ptr 此時ptr指向第乙個元素6 ptr 123展開為 ptr ptr 123 ptr 此時ptr指向第二個元素7 printf d,d n ptr,ptr...

response一些小細節

1 response 向客戶機輸出資料。2 位元組流 outputstream 可以輸出任何的資料,而字元流 writer 只能寫字元資料 3 respone.setheader content type text html charset utf 8 控制瀏覽器,指定編碼是utf 8 上面語句等同...

SQL SERVER 一些小細節

一.計算列的寫法 create table dbo test birthday varchar 8 collate chinese prc ci as not null constraint df tbl account birthday default convert char 8 getdate...