成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

獲取iOS設備的內存狀況

移動開發 iOS
iPhone這類移動設備內存有限,而又不能使用交換區,為了不至于導致內存不足而引起運行效率降低或應用崩潰,有時候需要獲取當前的內存狀況,以決定采用的緩存策略。

由于iPhone這類移動設備內存有限,而又不能使用交換區,為了不至于導致內存不足而引起運行效率降低或應用崩潰,有時候需要獲取當前的內存狀況,以決定采用的緩存策略。

不過iOS SDK文檔里并沒有提及這種底層的API,于是我搜了一番,找到了host_statistics()這個函數。

參數雖然很多,但基本上都是固定的值,我也就不解釋,直接上代碼了:

  1. #include <mach/mach.h> 
  2.  
  3. BOOL memoryInfo(vm_statistics_data_t *vmStats) { 
  4.     mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT
  5.     kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)vmStats, &infoCount); 
  6.      
  7.     return kernReturn == KERN_SUCCESS; 
  8.  
  9. void logMemoryInfo() { 
  10.     vm_statistics_data_t vmStats; 
  11.      
  12.     if (memoryInfo(&vmStats)) { 
  13.         NSLog(@"free: %u\nactive: %u\ninactive: %u\nwire: %u\nzero fill: %u\nreactivations: %u\npageins: %u\npageouts: %u\nfaults: %u\ncow_faults: %u\nlookups: %u\nhits: %u", 
  14.             vmStats.free_count * vm_page_size, 
  15.             vmStats.active_count * vm_page_size, 
  16.             vmStats.inactive_count * vm_page_size, 
  17.             vmStats.wire_count * vm_page_size, 
  18.             vmStats.zero_fill_count * vm_page_size, 
  19.             vmStats.reactivations * vm_page_size, 
  20.             vmStats.pageins * vm_page_size, 
  21.             vmStats.pageouts * vm_page_size, 
  22.             vmStats.faults, 
  23.             vmStats.cow_faults, 
  24.             vmStats.lookups, 
  25.             vmStats.hits 
  26.         ); 
  27.     } 

調用memoryInfo()就能拿到內存信息了,它的類型是vm_statistics_data_t。這個結構體有很多字段,在logMemoryInfo()中展示了如何獲取它們。注意這些字段大都是頁面數,要乘以vm_page_size才能拿到字節數。

順便再簡要介紹下:free是空閑內存;active是已使用,但可被分頁的(在iOS中,只有在磁盤上靜態存在的才能被分頁,例如文件的內存映射,而動態分配的內存是不能被分頁的);inactive是不活躍的,實際上內存不足時,你的應用就可以搶占這部分內存,因此也可看作空閑內存;wire就是已使用,且不可被分頁的。

最后你會發現,即使把這些全加起來,也比設備內存少很多,那么剩下的只好當成已被占用的神秘內存了。不過在模擬器上,這4個加起來基本上就是Mac的物理內存量了,相差不到2MB。

而總物理內存可以用NSRealMemoryAvailable()來獲取,這個函數不需要提供參數,文檔里也有記載,我就不寫演示代碼了。

責任編輯:佚名 來源: keakon的涂鴉館
相關推薦

2011-07-26 17:50:07

iOS 設備

2017-03-19 22:13:10

WebAssemblyJavaScript編程

2011-08-03 11:21:30

iOS程序 測試 UDID

2014-09-22 10:55:14

2011-05-11 11:55:02

應用交付數據中心負載均衡

2011-09-16 16:55:08

iOS應用Evoz

2015-03-13 09:30:23

iOS內存管理

2018-07-23 09:26:08

iOS內存優化

2017-02-09 21:24:22

iOS內存管理

2023-10-27 16:12:29

2017-03-07 10:15:35

iOS內存管理開發

2024-04-16 00:13:52

JS網絡狀態ts類

2009-09-03 17:51:34

C#獲取設備的ID

2011-09-01 16:06:41

ios

2013-06-27 10:57:45

判斷當前iOS設備iOS開發移動開發

2024-12-25 14:43:22

2010-07-01 22:12:27

移動設備iOS 邁克菲

2009-12-16 16:12:10

Ruby語言發展

2023-09-04 00:03:08

2011-10-10 14:42:22

SQL Server
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 瑟瑟免费视频 | 成人av一区二区在线观看 | 天天综合网天天综合色 | 波多野结衣一区二区三区 | 国产精品成人一区二区三区 | 日韩在线视频一区 | 日韩精品一区二区三区在线播放 | 国产精品一区在线观看 | 欧美a级成人淫片免费看 | 久久午夜精品福利一区二区 | wwwxxx国产| 亚洲视频免费在线播放 | 国产专区在线 | 久久一二 | 欧美午夜精品久久久久免费视 | 九色在线视频 | 蜜桃免费一区二区三区 | 久久精品国产v日韩v亚洲 | 伦理午夜电影免费观看 | 一二三区视频 | 91视频中文| 一区二区三区视频 | 国产精品久久久久久模特 | 亚洲第1页| 日韩欧美三级电影在线观看 | 亚洲视频www | 91麻豆精品国产91久久久久久久久 | 久久国产精品久久久久 | 日韩视频一区二区在线 | 国产视频福利在线观看 | 国产成人午夜高潮毛片 | 欧美精品一区二区免费 | 毛片一级片| 欧美乱码精品一区二区三区 | 国产精品视频一二三区 | 欧美精品91 | 欧美日韩在线一区二区三区 | 91精品国产综合久久香蕉麻豆 | 99国产精品视频免费观看一公开 | 一级片在线观看 | 日本一区二区不卡视频 |