我一直在閱讀很多有關跟蹤Instrument的內存使用情況,但幾乎沒有與Monotouch結合使用的內容。我應該使用什麼儀器工具來了解我的Monotouch應用的內存使用情況?
似乎有是三個oposing索賠這裏:
- 使用儀器的分配的效用。 「活動字節數」是應用程序使用的物理內存量。
- 使用內存監視器插件。從進程列表中,選擇您的應用程序並檢查「真實內存」列。這是當前正在使用的RAM數量。
- 使用虛擬機跟蹤器並進行自動快照。 「髒大小」,如果你在之後。
從我注意到:
- 「實內存」只要GC被觸發
- 即使我的「活字節」保持30MB左右我最終會給內存警告下降
- 隨着「Live Bytes」的不斷增加,「Real Memory」可以顯着增加,容易增長到200MB或更多。
- 在使用QLPreviewController並查看一個瘋狂的大Word文檔(1000頁)時,滾動瀏覽該文檔會瘋狂地增加真實內存。如果收到內存警告,則實際內存,不是實時的字節。最終,應用程序將崩潰; Monotouch問題還是Apple的問題?
- 有時候,真實記憶似乎會增長,沒有什麼能阻止它。再說一遍,GC似乎很清楚它的大塊。這裏沒有真正的模式。
那麼正確的答案是什麼?有一個嗎?
編輯:我附上了兩張圖片。一個顯示我的應用程序生命中某個階段的內存使用情況,以及稍後的第二個階段。這兩個圖像都反映了用戶界面中同一點的內存使用情況,其中只有兩個控制器在屏幕上。也許有人仍然可以評論這些數字,特別是神奇的「Memory Tag 70」。
關於您對QLPreviewController和真實內存增長的評論:我沒有意識到對QLPreviewController的內存使用情況。只需創建一個測試應用程序,並給它一個巨大的文檔和滾動,你會看到真正的內存增長。關於內存的增長:我的意思是,有時應用程序會以60MB的真實內存被殺,有時甚至會有200MB的真實內存。我的感覺是,GC有時不能提供未壓縮的內存,但我無法證明它(但:-))。 – Krumelur
我驗證過,我可以看到50%的髒內存來自「內存標籤70」 - 這是什麼? – Krumelur
@Krumelur內存標籤70 - > http://stackoverflow.com/q/6527651/220643 – poupou