memory management in cocos2d x - le duy vu

Post on 19-Jan-2015

2.646 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

MEMORY MANAGEMENT IN COCOS2D-X

Reference Count and AutoReleasePool

Texture Cache

Optimize memory in game.

AUTORELEASEPOOL AutoReleasePool:

CCAutoreleasePool can not be NESTED.

CCAutoreleasePool cannot be used in multi-thread.

USE AUTORELEASE POOL  A *a = new A(); a->autorelease() . From here you must not interested

release/delete this object . Autorelease pool will delete/release

object ,but when?

//in init scene m_pNode = CCNode::create();

m_pNode = new CCNode(); m_Node->autorelease();

  //1 funciton orther in frame orther

m_pNode->setPosition(ccp(0, 0));

class A  {    CCNode *m_pNode;

public: // pointer dangling!!

~A() { SAFE_DELETE(m_pNode); };  void setNode(CCNode *pNode) { m_pNode = pNode; }; 

} What happen if at time call ~A(), pNode

deleted?

class A {   CCNode *m_pNode;  public: 

~A() { SAFE_RELEASE(m_pNode); };// OK now 

void setNode(CCNode *pNode) {

m_pNode = pNode;  pNode->retain(); }; 

}

TEXTURE CACHE Textures are cached which can later be

used for drawing.

TEXTTURE CCTextureCache CCSpriteFrameCache

CCSPRITEFRAMECACHE

The CCSpriteFrameCache singleton is a cache of all sprite frames. Using a spritesheet and its associated xml file we can load multiple sprites into the cache. From here we can create CCSprite objects with sprites from the cache.

OPTIMIZE MEMORY IN GAME

Avoid loading PNG/JPG Textures. Load textures from largest to smallest. Use .pvr.czz file format. Use particles.

Avoid loading PNG/JPG Textures :In loading texture size 2M .you have to 4M memory.

Load textures from largest to smallest : If you must load 4 file (4M) and 1

file(16M) If load 4 file(4M) before load file 16 M :

max-memory use : 4 x 4 + 16 x 2 = 48 M.

If load 4 file(4M) after loaded file 16M : max-memory use : 16 + 4 x3 + 4 x 2 = 36 M.

top related