[問題] 請問有關arc下的記憶體cpu管理
大家好,最近應公司需求必須開發一個OSX下的檢測系統...
現在碰到一個卡了很久的問題想請教有沒有建議的做法跟方向
現在程式開始測試時會有一個紀錄測試時間的Label
在程式開始動作的按鈕我寫下了:
NSThread *Test_time;
NSDate *Test_Time_total = [NSDate date];
-(IBAction)Start:(id)sender{
Test_time = [[NSThread alloc]initWithTarget:self selector:@selector(Test_Time)
[Test_time setThreadPriority:0.3];
[Test_time start];
}
-(void)Test_Time {
#pragma mark Main - For Test Time.
@autoreleasepool{
Test_Time_total = [NSDate date];
do{
[_testTimeLabel setStringValue:[NSString stringWithFormat:@"%1.2f
s",[[NSDate date] timeIntervalSinceDate:Test_Time_total]]];
}while(AbortPress == NO);
}
僅是光這樣而已,當我執行時時間確實會不斷刷新顯示至開始時至現在的時間,
但是XCode中記憶體(Memory Use)以及CPU(Percentage Used)會不斷攀升飆高
我的記憶體有8G攀升到了6.9G CPU幾乎滿載,更不用說寫其他測試METHOD了
想請問大家有沒有建議的方向或做法...就算不加@autoreleasepool也是一樣...謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.134.2
※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1470288349.A.48D.html
推
08/04 14:45, , 1F
08/04 14:45, 1F
→
08/04 14:45, , 2F
08/04 14:45, 2F
謝謝回應,但是主要測試程式必須用迴圈去跑...設置要跑一個晚上看機器結果
會有停止的迴圈但是時間很長,請問這樣也能用NSTimer去撰寫嗎?謝謝!
※ 編輯: aureolus (60.248.134.2), 08/04/2016 15:10:53
推
08/04 15:33, , 3F
08/04 15:33, 3F
→
08/04 15:34, , 4F
08/04 15:34, 4F
→
08/04 15:34, , 5F
08/04 15:34, 5F
謝謝,時間只是其中一個部分,主要測試有非常多測試Function,
比方說連接USB port..連接訊號 斷開訊號送出...GPIB指令等等
測試會依照使用者設定LOOP多次設置產生LOG這樣,剛剛我將時間用NSTIMER
成功解決了這個問題非常感謝,但是主要測試程序目前看起來只能用執行緒去跑
爬了許多文章有看到NSThread下自動釋放池在迴圈中好像是無效的...持續研究中 謝謝!
※ 編輯: aureolus (60.248.134.2), 08/04/2016 15:49:00
推
08/04 18:20, , 6F
08/04 18:20, 6F
→
08/04 18:21, , 7F
08/04 18:21, 7F
→
08/04 22:35, , 8F
08/04 22:35, 8F
→
08/04 22:36, , 9F
08/04 22:36, 9F
→
08/04 22:37, , 10F
08/04 22:37, 10F
→
08/04 22:40, , 11F
08/04 22:40, 11F
→
08/04 22:41, , 12F
08/04 22:41, 12F
→
08/04 22:44, , 13F
08/04 22:44, 13F
非常感謝兩位的幫忙,Update UI要用dispatch我有深刻體驗了...非常感謝建議
加入後整個UI記憶體使用量下降非常多,現在都能控制整體在30~50m之間
睡個一秒這個我也試過了,但是對測試時間來說加太多反而會不能達到預期結果
CPU跟記憶體目前有明顯改善有下降了,不過還是會隨著程式跑越久迴圈疊加越多
這點還在持續研究記憶體洩漏的問題,感謝各位大力協助!
※ 編輯: aureolus (60.248.134.2), 08/05/2016 14:41:02
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章