Memory management in cocos2d x - Le Duy Vu

4,585 views
4,076 views

Published on

Published in: Technology, Art & Photos
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,585
On SlideShare
0
From Embeds
0
Number of Embeds
29
Actions
Shares
0
Downloads
28
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Memory management in cocos2d x - Le Duy Vu

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

×