Memory management in cocos2d x - Le Duy Vu
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,226
On Slideshare
3,204
From Embeds
22
Number of Embeds
1

Actions

Shares
Downloads
18
Comments
0
Likes
2

Embeds 22

http://www.scoop.it 22

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1.  Reference Count and AutoReleasePool  Texture Cache  Optimize memory in game.
  • 2.  Reference Count : is an old approach of memory management in C/C++ projects.  Example :
  • 3.  AutoReleasePool:  CCAutoreleasePool can not be NESTED.  CCAutoreleasePool cannot be used in multi-thread.
  • 4.  A *a = new A(); a->autorelease() .  From here you must not interested release/delete this object .  Autorelease pool will delete/release object ,but when?
  • 5.  //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));
  • 6. 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?
  • 7. class A { CCNode *m_pNode; public: ~A() { SAFE_RELEASE(m_pNode); };// OK now void setNode(CCNode *pNode) { m_pNode = pNode; pNode->retain(); }; }
  • 8.  Textures are cached which can later be used for drawing.
  • 9.  CCTextureCache  CCSpriteFrameCache
  • 10.  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.
  • 11.  Avoid loading PNG/JPG Textures.  Load textures from largest to smallest.  Use .pvr.czz file format.  Use particles.
  • 12.  Avoid loading PNG/JPG Textures : In loading texture size 2M .you have to 4M memory.
  • 13. 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.