iOSメモリ圧迫テストを実現する
iOSでメモリ圧迫時にkeyChainを読み込めないバグがあるという話を聞いたので、試してみる為に、 一旦メモリ圧迫時の環境をつくる事にしました。
今回やりたい事は、メモリ圧迫時の環境をつくる。なので、デブッグしたい処理の直前で、メモリを確保して圧迫してみようと思います。
以下のメソッドを追加しましょう。
void *_pointerArray[1024 * 1024]; static void *AllocateDirtyBlock(NSUInteger size) { Byte *block = malloc(size); for (NSUInteger offset = 0; offset < size; offset++) { block[offset] = offset & 0xff; } return block; }
メモリを確保する時にはこんな感じで確保します。
int times = 900; // <<<<<<<<<<< 使用デバイスによって違うのでいい塩梅見つけて! for (int i = 0; i < times; i++) { _pointerArray[i] = AllocateDirtyBlock(256 * 1024); }
メモリを解放する時にはこんな感じで解放します。
for (int i = 0; i < times; i++) { if (_pointerArray[i] != NULL) { free(_pointerArray[i]); _pointerArray[i] = NULL; } }