2016-12-06 17 views
3

如何通過編程方式獲取我的應用程序和系統的內存使用情況?如何通過編程獲得我的應用程序和系統的內存使用情況

不僅系統,而且我的應用程序

+0

的可能的複製[如何配置內存使用和性能與儀器?](http://stackoverflow.com/questions/6641540/how-to-profile-memory-usage-performance-with-instruments) – dirtydanee

+0

@dirtydanee不,我想通過編程得到它 – SubCycle

+0

你的意思是編程式的,對吧? – dirtydanee

回答

3

對於雨燕3.0您可以使用下面的函數。

func report_memory() { 
    var taskInfo = mach_task_basic_info() 
    var count = mach_msg_type_number_t(MemoryLayout<mach_task_basic_info>.size)/4 
    let kerr: kern_return_t = withUnsafeMutablePointer(to: &taskInfo) { 
     $0.withMemoryRebound(to: integer_t.self, capacity: 1) { 
      task_info(mach_task_self_, task_flavor_t(MACH_TASK_BASIC_INFO), $0, &count) 
     } 
    } 

    if kerr == KERN_SUCCESS { 
     print("Memory used in bytes: \(taskInfo.resident_size)") 
    } 
    else { 
     print("Error with task_info(): " + 
      (String(cString: mach_error_string(kerr), encoding: String.Encoding.ascii) ?? "unknown error")) 
    } 
} 
+0

thx,順便說一句,我可以在哪裏找到蘋果的Darwin api的文檔,比如'mach_task_basic_info''kern_return_t' – SubCycle

+0

好吧有這個,https://opensource.apple.com/source/ xnu/xnu-2050.9.2/osfmk/mach/task_info.h,但我不確定是否還有其他Apple特定的文檔。 – dirtydanee

+1

代碼有效,但代碼獲取的值與其他應用程序(BMSSM/sys狀態/等)不同。不知道哪一個是正確的。 – User9527

相關問題