作者neocc (neo)
看板MacDev
標題[問題] 如何清除NSString 記憶體
時間Sat Jun 20 04:00:31 2015
不好意思 又要麻煩各位了..
想請問大家
for(int i=0;i<2000000;i++)
{
NSString *KeyR;
NSString *KeyG;
NSString *KeyB;
KeyR = [NSString stringWithFormat:@"%d", 1];
KeyG = [NSString stringWithFormat:@"%d", 2];
KeyB = [NSString stringWithFormat:@"%d", 3];
}
我跑這段的時候 記憶體大大增加
請問要怎麼在每一個loop的時候 清除NSString記憶體呢?
謝謝大家!~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.207.126
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MacDev/M.1434744034.A.B64.html
1F:→ cryinglove: nsstring 放外面試試看吧,感覺每次都重新建立變數, 06/20 06:30
2F:→ cryinglove: 就一直耗記憶體,兩百萬次跑起來很恐怖吧 06/20 06:30
3F:推 yoshilin: 傳統上local是放stack,即使在block內宣告應該也不會多 06/20 07:55
4F:→ yoshilin: allocate記憶體空間 06/20 07:55
5F:→ yoshilin: 可能是stringWithFormat其實就是new一個heap的object 06/20 07:56
6F:→ yoshilin: 所以要不要試試NSMutableString 06/20 07:57
7F:推 abcdefghi: 非常需要效率和記憶體的地方, 建議還是用C比較好 06/20 10:10
8F:→ tom19830924: 你用 [[NSString] alloc] initWithFormat] 看看 06/20 12:53
9F:→ tom19830924: 我用這他記憶體就不會飆上去了 但是thread會卡就是了 06/20 12:54
10F:→ tom19830924: 這在ARC應該會自動幫你插入release 06/20 12:54
11F:→ Esvent: for(int i=0;i<2000000;i++) @autoreleasepool { 06/20 13:54
12F:→ Esvent: // Your code... 06/20 13:54
13F:→ Esvent: } 06/20 13:55
14F:推 kingof543: Autorease pool 06/26 13:01