2017-02-28 76 views
-1

我正在開發一個使用Xamarin.iOS的應用程序。這是常識,它的記憶處理非常低效,泄漏幾乎是不可避免的。這就是爲什麼我要儘可能小心,不要做任何愚蠢的事情:沒有循環依賴關係,沒有事件監聽器留下未被移除等等。我使用Instruments監視我的應用程序使用的資源。我有以下應用程序設計: 有一個UIViewControllerA其中有一個UITableView和幾個標籤/按鈕。當您按下三個表格條目中的任何一個時,您分別導航到UIViewControllerB,UIViewControllerCUIViewControllerD。它也會產生幾個HTTP請求。每個控制器也有標籤,圖形,表格,滾動視圖,按鈕等,他們也提出HTTP請求。我正在測試我的應用程序,從UIViewControllerA到那三個和後面,隨機。同時,隨着每個新UIViewControllers的新外觀,我可以看到Instrument的資源監視器的列增加了1-2MB。它永遠不會停止。因爲我不知道,內存應該如何表現,而且由於這個主題幾乎沒有任何信息,我不知道這是否被認爲是iOS應用程序的正常行爲。好嗎?我意識到我的問題非常模糊,但我需要知道我是否需要關注那些「跡象」。iOS應用程序內存使用情況的正常行爲是什麼?

回答

1

如果沒有對代碼的深入瞭解以及它究竟在做什麼,我會說這不是一種正常的行爲。如果您在ControllerA,B和A之間切換,它也應該釋放一些內存。良好的內存使用情況應該看起來像鋸片一樣起伏不平。

一般問題是GC可能無法立即釋放內存。如果你的圖像處理等內存繁重的操作,你可以考慮使用GC.Collect() - 但這應該是你的最後一個選擇 - 強制收集並釋放一些內存。

除了儀器,我也大量使用儀器來分析我的應用程序,是Xamarin探查器,以獲得更多的見解,仍然活着的東西,並保留一些參考。如果由於某種原因您不能使用Xamarin Profiler,請使用名爲堆式鏡頭的工具構建。

相關問題