3 回答

TA貢獻1850條經驗 獲得超11個贊
對于那些在2012年之后看到此帖子的人:
真正加載到設備物理內存中的內存是VM Tracker Instrument中的常駐內存。
分配工具僅標記由malloc / [NSObject alloc]和某些框架緩沖區創建的內存,例如,解壓縮的圖像位圖未包含在分配工具中,但它始終占用您的大部分內存。
請觀看WWDC 2012 Session 242 iOS App性能:內存以從Apple獲取信息。

TA貢獻1853條經驗 獲得超9個贊
我認為這是由于OpenGL ES的內存使用情況已從ObjectAlloc中隱藏,但已計入“內存監視器”中。例如,在這里的問題中,請參見zoul的測試,他在創建紋理時觀察到ObjectAlloc略有上升,但隨后該內存在傳遞給OpenGL ES時從該儀器中消失了。內存監視器仍會跟蹤該紋理內存。
這應該包括UI元素(如圖層和視圖)的視覺外觀,因為CALayers實際上是OpenGL ES紋理的包裝。UI元素的實際2D圖像表示似乎沒有被ObjectAlloc跟蹤,這導致ObjectAlloc中的總值較低。
ObjectAlloc仍然可以很好地跟蹤分配的數量和類型,并且自從出現堆快照功能以來,它就變得更加有價值。您只想與Memory Monitor配合使用,以查看您真正的整體內存使用情況。

TA貢獻1828條經驗 獲得超4個贊
內存監視器將計算應用程序擁有的大部分或全部資源,包括在內核級別間接分配的資源。這包括Brad建議的AFAIK視頻內存(紋理等),還包括內存映射文件以及可能比較大的內核結構(如套接字)。清單可能很長...
- 3 回答
- 0 關注
- 571 瀏覽
添加回答
舉報