看板 MacDev 關於我們 聯絡資訊
不好意思 又要麻煩各位了.. 想請問大家 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://www.ptt.cc/bbs/MacDev/M.1434744034.A.B64.html
cryinglove: nsstring 放外面試試看吧,感覺每次都重新建立變數, 06/20 06:30
cryinglove: 就一直耗記憶體,兩百萬次跑起來很恐怖吧 06/20 06:30
yoshilin: 傳統上local是放stack,即使在block內宣告應該也不會多 06/20 07:55
yoshilin: allocate記憶體空間 06/20 07:55
yoshilin: 可能是stringWithFormat其實就是new一個heap的object 06/20 07:56
yoshilin: 所以要不要試試NSMutableString 06/20 07:57
abcdefghi: 非常需要效率和記憶體的地方, 建議還是用C比較好 06/20 10:10
tom19830924: 你用 [[NSString] alloc] initWithFormat] 看看 06/20 12:53
tom19830924: 我用這他記憶體就不會飆上去了 但是thread會卡就是了 06/20 12:54
tom19830924: 這在ARC應該會自動幫你插入release 06/20 12:54
Esvent: for(int i=0;i<2000000;i++) @autoreleasepool { 06/20 13:54
Esvent: // Your code... 06/20 13:54
Esvent: } 06/20 13:55
kingof543: Autorease pool 06/26 13:01