iOS

2013-07-08, ios

メモリ使用量を確認

iOSアプリのメモリ使用量と空きメモリ量を調べるための関数です。参考リンクのコピーなのですが…。どちらの関数も、以下のヘッダファイルをインポートしないと動作しません。ちなみに、machというキーワードで検索するとカーネギメロン大で開発されたOSカーネルの名前が出て来ます。歴史的な経緯で名前だけ残っているのでしょうか。

#import <mach/mach.h>
メモリ使用量
+ (unsigned int)getMemoryUsage {
  struct task_basic_info basicInfo;
  mach_msg_type_number_t basicInfoCount = TASK_BASIC_INFO_COUNT;

  if (task_info(current_task(), TASK_BASIC_INFO, (task_info_t)&basicInfo, &basicInfoCount) != KERN_SUCCESS) {
    NSLog(@"[SystemMonitor] %s", strerror(errno));
    return -1;
  }

  return basicInfo.resident_size;
}
空きメモリ量
+ (unsigned int)getFreeMemory {
  mach_port_t hostPort;
  mach_msg_type_number_t hostSize;
  vm_size_t pagesize;

  hostPort = mach_host_self();
  hostSize = sizeof(vm_statistics_data_t) / sizeof(integer_t);
  host_page_size(hostPort, &pagesize);
  vm_statistics_data_t vmStat;

  if (host_statistics(hostPort, HOST_VM_INFO, (host_info_t)&vmStat, &hostSize) != KERN_SUCCESS) {
    NSLog(@"[SystemMonitor] Failed to fetch vm statistics");
    return -1;
  }

  natural_t freeMemory = vmStat.free_count * pagesize;

  return (unsigned int)freeMemory;
}

参考URL

この記事は役に立ちましたか?