小さな cocos2d デモのメモリ測定に取り組んでいます。デモのタスクは、1 つの png 画像を cocos2d テクスチャ キャッシュに追加することです。使用するモニターは、Instruments の割り当てとアクティビティ モニターです。
テストデバイスは iPod touch4 です。
アプリのメモリと割り当てのライブ バイトとの関係を見つけるために、2 つのテスト シナリオを設計します。
最初のシナリオは、テクスチャをキャッシュに追加し、すぐに削除することです。テストコードは以下です。
CCTextureCache* キャッシュ = [CCTextureCache sharedTextureCache];
CCTexture2D* tex = [キャッシュ addImage:@"textureatlas_RGBA8888.png"];
[キャッシュ removeTexture:tex];
2 番目のシナリオは、テクスチャをキャッシュに追加することですが、キャッシュには残します。テストコードは以下です。
CCTextureCache* キャッシュ = [CCTextureCache sharedTextureCache];
CCTexture2D* tex = [キャッシュ addImage:@"textureatlas_RGBA8888.png"];
png ファイルのサイズは 270KB で、サイズは 1024 * 1024、色深度は 32 ビットで、テクスチャはキャッシュで 1024 * 1024 * 4 バイト (32 ビット) = 4096 KB を占めます。
テスト結果は次のとおりです。
最初のシナリオの結果:
画像をキャッシュに追加している間、ライブ バイトは6.16MBに増加しますが、しばらくすると2.08MB 強に戻ります。
アプリがすべての操作を完了するまで、ライブ バイトのレベルは安定します。この時点で、Activity Monitor の実際のメモリは11.61MBです。
2 番目のシナリオの結果:
2 番目のテストのグラフは最初のグラフと似ていますが、ライブ バイトが安定している場合、実際の男性は15.62MBです。
私の最初の質問は次のとおりです。
2 番目のシナリオでキャッシュ内のテクスチャを削除しなくてもグラフがほぼ同じになるのはなぜですか? 割り当ては、テクスチャをメモリ内のライブ バイトと見なしませんか?
2 番目の質問は次のとおりです。
この記事から学んだように: Cocos2D アプリのメモリ使用量とバンドル サイズを最適化する方法 ( http://www.learn-cocos2d.com/2012/11/optimize-memory-usage-bundle-size-cocos2d-app/ )、png ファイルは最初にUIImage に変換されてからテクスチャ キャッシュに追加されるため、1 つの 1024*1024 テクスチャは 4MB のメモリを使用し、ロード中に8MB のメモリを短時間使用します。割り当ての追跡グラフ?
ご協力いただきありがとうございます。