アプリが物理的に消費するメモリの量は、ハードドライブの場合のように、実行時に消費するメモリの量と関係がありますか?たとえば、私のBackground.cafファイルがディスク上で4.9メガバイトのスペースを占める場合、iPhoneで実行すると、ちょうど4.9メガバイトが私の音楽に割り当てられますか?同様に、私のグラフィックが20メガバイトのスペースを占める場合、これらのグラフィックの保存とアクセスに使用されるiPhoneのメモリの量は20メガバイトに相当しますか?現在作業しているファイルのサイズがパフォーマンスに大きな影響を与えるかどうかを知りたいので、これは重要です。ありがとうございました!
2 に答える
アプリが物理的に消費するメモリの量は、ハードドライブの場合のように、実行時に消費するメモリの量と関係がありますか?
いいえ、絶対にありません。そうしないと、オートデスクはすぐに廃業してしまいます。
iPhoneで実行している場合、私の音楽には正確に4.9メガバイトが割り当てられていますか?
いいえ、音楽は一度にメモリに読み込まれるわけではなく、チャンク、ストリームで送信されたり、リアルタイムで解凍されたりしますが、すべてがメモリに存在することはありません。
同様に、私のグラフィックが20メガバイトのスペースを占める場合、これらのグラフィックの保存とアクセスに使用されるiPhoneのメモリの量は、20メガバイトに相当します。
場合によります。UIImageはオンデマンドでロードされ、呼び出されたメソッドに応じてキャッシュされます(たとえば+imageNamed:
、キャッシュされ、キャッシュされ+imageWithContentsOfFile:
ない)。ただし、Xcodeは、ロードされる前に一連の最適化と圧縮を実行するため、PNGリソースは常にファイルサイズよりもわずかに多くのメモリを占有します。バンドル。画像をキャッシュすると、全体的なメモリフットプリントがわずかに増加しますが、UIImageがディスク上で画像を再度探す必要がないため、画像の読み込みが速くなります。
また、これはJPEG画像でも変わります。これは、有名なファイル形式固有の不可逆圧縮メカニズムを備えているため、ディスク上でははるかに小さく、メモリ内では大量になります。
オーディオファイルはストリームとして読み込まれ、アプリのメモリの20Mを占有しません。画像ファイルについてはわかりませんが、iosはアプリケーションで読み込んだ画像をキャッシュするため、正確な情報を提供することはできません。画像