为什么纹理缓存未反映在Live Bytes of Allocations中

时间:2013-08-02 09:33:29

标签: cocos2d-iphone uikit instruments

我正在研究一点cocos2d演示的内存测量,演示的任务是将一个png图像添加到cocos2d纹理缓存中,我使用的监视器是Instruments中的Allocations和Activity Monitor。

测试设备是ipod touch4。

为了找到app的内存和分配的实时字节之间的关系,我设计了两个测试场景。

第一种情况是将纹理添加到缓存中,立即将其删除。测试代码如下:

  

CCTextureCache * cache = [CCTextureCache sharedTextureCache];

     

CCTexture2D * tex = [cache addImage:@“textureatlas_RGBA8888.png”];

     

[cache removeTexture:tex];

第二种情况是将纹理添加到缓存中,但是将其保留在缓存中。测试代码如下:

  

CCTextureCache * cache = [CCTextureCache sharedTextureCache];

     

CCTexture2D * tex = [cache addImage:@“textureatlas_RGBA8888.png”];

png文件的大小为270KB,大小为1024 * 1024,颜色深度为32位,其纹理将占用1024 * 1024 * 4字节(32位)= 4096 KB的缓存。

测试结果如下:

第一个方案的结果:

enter image description here

在将图像添加到缓存期间,实时字节将升至 6.16MB ,在一段时间内,它将返回略高于 2.08MB

在应用程序完成所有操作之前,活字节的级别将保持稳定。此时,活动监视器中的实际内存为 11.61MB

第二种情况的结果:

enter image description here

第二次测试的图形与第一次测试类似,但是,当实时字节稳定时,真实男性 15.62MB

我的第一个问题是:

为什么图表几乎相同即使我在第二种情况下不删除缓存中的纹理?分配不会将纹理视为内存中的活字节吗?

第二个问题是:

正如我从本文中学到的:如何优化Cocos2D应用程序(http://www.learn-cocos2d.com/2012/11/optimize-memory-usage-bundle-size-cocos2d-app/)的内存使用量和包大小,因为png文件将首先转换为UIImage,然后添加到纹理缓存,一个1024 * 1024纹理使用4MB内存,加载它会在短时间内使用8MB内存为什么我无法在分配跟踪图中观察

感谢您的帮助。

0 个答案:

没有答案