I'm trying to understand why allocating 5 small `CCSprite` assets via `initWithSpriteFrame` is consuming 16Mb of memory in my application. These 5 small sprites are each a mere `24Kb` in .png format, but then packed into a `pvr.ccz` file via [TexturePacker](https://www.codeandweb.com/texturepacker). Here are my settings:

![enter image description here](https://i.stack.imgur.com/OAp7T.png)

The entire size of the `pvr.czz` file is `2.5 Mb`. Each of the 5 small sprites are `66x66` px (@2x resolution). To match with these settings, I invoke the following in my cocos2d initialization, precaching the sprite sheets on startup:

```
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
[CCTexture2D PVRImagesHavePremultipliedAlpha:YES];

for(NSString *fnSheet in kGlobalSpriteSheets) {
  [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:fnSheet];
}

```

Then I call `addOrb` to create the assets, which essentially invokes `CCSprite initWithSpriteFrame` like this:

```
- (id)initWithAsset:(NSString*)assetName {
  CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:assetName];
  return [self initWithSpriteFrame:frame];
}

```

Using profiler, we can see that the `addOrb` function is consuming 16Mb of memory:

![enter image description here](https://i.stack.imgur.com/DXMJb.png)

**note** the call stack shows 14 invocations of the `addOrb` function, which is true, but there are only a total of 5 different assets which may be loaded by this function.

The first thing that jumps out at me is that the Profiler seems to indicate that the PVR texture is not being allocated until `initWithSpriteFrame` is called, despite my attempts to preload it (?)

By the time my app startup is complete, my allocated memory is at `225Mb`. This is on the high end, and I'm looking for any ways to pare this down.

---

Edit: After the "precaching", `[[CCTextureCache sharedTextureCache] dumpCachedTextureInfo]` gives me this:

```
2014-08-21 10:24:29.060 Aftermath[46067:1115151] cocos2d: "cc_fps_images"   rc=5    id=2    512 x 64    @ 16 bpp => 64 KB

```

2014-08-21 10:24:29.060 Aftermath[46067:1115151] cocos2d: CCTextureCache dumpDebugInfo: 1 textures, for 64 KB (0.06 MB)

And after the sprites are allocated:

```
2014-08-21 10:24:29.060 Aftermath[46067:1115151] cocos2d: "cc_fps_images"   rc=5    id=2    512 x 64    @ 16 bpp => 64 KB
2014-08-21 10:24:29.060 Aftermath[46067:1115151] cocos2d: CCTextureCache dumpDebugInfo: 1 textures, for 64 KB (0.06 MB)
2014-08-21 10:25:15.805 Aftermath[46067:1115151] cocos2d: "fonts/cinzel_18.png" rc=33   id=5    512 x 256   @ 32 bpp => 512 KB
2014-08-21 10:25:15.806 Aftermath[46067:1115151] cocos2d: "menu.pvr.ccz"    rc=7    id=6    2048 x 2048 @ 32 bpp => 16384 KB
2014-08-21 10:25:15.806 Aftermath[46067:1115151] cocos2d: "cc_fps_images"   rc=5    id=2    512 x 64    @ 16 bpp => 64 KB
2014-08-21 10:25:15.806 Aftermath[46067:1115151] cocos2d: "backgrounds/space.png"   rc=3    id=4    2048 x 1536 @ 32 bpp => 12288 KB
2014-08-21 10:25:15.806 Aftermath[46067:1115151] cocos2d: CCTextureCache dumpDebugInfo: 4 textures, for 29248 KB (28.56 MB)

```

So, it looks like the precaching isn't actually loading the files, but regardless: the thing that jumps out is that the `menu.pvr.ccz` (which contains the sprites in question) is consuming `16Mb` of memory despite its `2.5Mb` filesize. I guess this is just a necessary evil? I am aware that file size != memory consumption.