忍者ブログ

佐崎司と愉快な仲間達

ゲーム、アニメ、CG、iOS開発など思いついたことを記事にしています。 管理人が3人いますので、記事にまとまりはないと思います。 iPhoneアプリのレビュー依頼も受け付けています。

Allocationsの見捨てられたメモリについて

わか

instrumentsで見捨てられたメモリについて概要を記載します。

見捨てられたメモリ
メモリリークとは異なる。何らかの理由で確保されたが、使用されていない領域のこと。
実装を中断した中途半端なコードが残っている。データを重複して保存するような箇所がある。Allocationsにてある処理を繰り返して分析する技法「世代分析」して確認する。
Allocationsで検出可能


Allocations, Leaks画面

Allocations用語
All Heap & Anonymous VM
All Heap AllocationsとAnonymous VMを合わせた値

All Heap Allocations
ヒープ領域のこと。malloc関数などで動的に確保されたメモリ領域。free関数などでメモリ領域は解放される。(Open GL ESのテクスチャは含まれない)
(余談だが、ヒープ領域とは別にスタック領域というものが存在する。自動変数の確保と解放はこちらで行われる。確保、解放処理は全てOSが自動で行う)

All VM Regions
仮想メモリのこと。OSが自動でメモリ予約を行い、アプリがメモリ割当て(mallocなど)を行うと、メモリ予約された領域から割り当てる。通常、アプリが必要とするメモリ領域よりも大きくなる。アプリ側でこの領域を制御することはできない。


右タブのDisplay Settings
Genaration Analysis

世代分析する際に使用する。繰り返し同じメモリ割当てになるはずの範囲を指定して分析する。

Allocation Lifespan
「使用中のメモリ&破棄されたメモリ」「使用中のメモリ」「破棄されたメモリ」から切り替え表示できる。

Allocation Type
「ヒープ&仮想メモリ」「ヒープ」「仮想メモリ」から切り替え表示できる


メモリリークと違い見逃されがちですが、見捨てられたメモリも対処しないと落ちるアプリになるかもしれません。


拍手[0回]

PR