1. ホーム
  2. ios

[解決済み] iPhoneのメモリ使用量をプログラムで取得する

2022-10-08 11:52:06

質問

iPhoneアプリが使用しているメモリ量を、プログラムによっていつでも取得しようとしています。はい、私はObjectAlloc/Leaksについて知っています。私はそれらに興味がなく、いくつかのコードを書いて、使用されているバイトの量を取得し、NSLogを介してそれを報告することが可能であるかどうかを知りたいだけです。

ありがとうございます。

どのように解決するのですか?

アプリケーションが使用している実際のメモリのバイト数を取得するには、以下の例のようにします。しかし、さまざまなプロファイリング ツールに精通する必要があります。

#import <mach/mach.h>

// ...

void report_memory(void) {
  struct task_basic_info info;
  mach_msg_type_number_t size = TASK_BASIC_INFO_COUNT;
  kern_return_t kerr = task_info(mach_task_self(),
                                 TASK_BASIC_INFO,
                                 (task_info_t)&info,
                                 &size);
  if( kerr == KERN_SUCCESS ) {
    NSLog(@"Memory in use (in bytes): %lu", info.resident_size);
    NSLog(@"Memory in use (in MiB): %f", ((CGFloat)info.resident_size / 1048576));
  } else {
    NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
  }
}

info.virtual_size 構造体には、利用可能な仮想メモリのバイト数 (または、いずれにせよ潜在的な仮想メモリとしてアプリケーションに割り当てられたメモリ) を示すフィールドも存在します。pgb がリンクしているコードでは、デバイスで利用可能なメモリの量と、それがどのような種類のメモリであるかを知ることができます。