2013-03-16 45 views
2

使用VM跟蹤器工具,我看到我的iOS應用程序不斷增加虛擬內存的使用。正在增長的撥款沒有出現在常規的分配工具中,我想知道識別它們來自哪裏的過程。正在增長的類別是VM_ALLOCATE。iOS:識別虛擬內存分配的來源

我已經在vm_allocate上設置了一個符號斷點來捕獲我看到的特定大小的分配在工具中泄漏(使用寄存器$ r2作爲大小參數)。但是,我只在應用程序的整個生命週期中看到幾個4k分配(來自調試NSLog調用),並且沒有在儀器中報告1+ MB分配。

我正在使用的方法打破VM_ALLOCATE下在儀器中正確報告的所有分配?任何想法我可以嘗試確定增長分配的來源?

回答

0

在mach_vm_map上放置一個符號斷點。這會讓你多一些,但也許不是全部。

參見http://www.opensource.apple.com/source/Libc/Libc-825.40.1/gen/magazine_malloc.c

另一種可能性是直接相鄰的VM分配示於儀器合併成一個單獨的塊。換句話說,儀器顯示爲一個單一的大分配,實際上可能由許多相鄰的小分配組成。不過,我還沒有證實這一點。