`

Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用

阅读更多

Instruments是动态分析工具,它与Xcode集成在一起,可以在Xcode中通过菜单Product→Profile启动。启动如图所示,Instruments有很多跟踪模板可以动态分析和跟踪内存、CPU和文件系统。



每个跟踪模板都有不同的用途,其中Leaks可以检测内存泄漏点,Allocations跟踪模板可以查看内存的使用情况。下面我们通过一个实例介绍一些Instruments工具的使用,我们来人为制造一个内存泄漏,我们在HelloWorldScene.cpp中修改代码:

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. bool HelloWorld::init()  
  2. {  
  3.     if ( !Layer::init() )  
  4.     {  
  5.         return false;  
  6.     }  
  7.     __String *s = new __String();  
  8.   
  9.   
  10.     log("%s",s->getCString());  
  11.   
  12.   
  13. … …  
  14.   
  15.   
  16.     return true;  
  17. }  



我们在代码中添加了__String *s = new __String()语句,使用new关键字分配内存,然而直到init函数结束我们都没有使用delete s语句释放它。这样的语句会导致内存泄漏。
首先启动Instruments工具,在图对话框中选择Leaks跟踪模板,点击按钮Profile进入如图所示界面。


在Instruments中,虽然选择了Leaks模板,但默认情况下也会添加Allocations模板。基本上凡是分析内存都会使用Allocations模板,它可以监控内存分布情况。选中Allocations模板(图中①区域),右边的③区域会显示随着时间的变化内存使用的折线图,同时在④区域会显示内存使用的详细信息,以及对象分配情况。点击Leaks模板(图中②区域),可以查看内存泄漏情况,如图20-3所示,如果在③区域有红线出现,则有内存泄漏,④区域则会显示泄漏的对象。


点击上图中出现的泄漏点(红线)在④区域打开详细界面,如下图所示,可以发现一个cocos2d::__String对象,可以看到它的内存地址、占用字节、所属框架和所属函数等信息。



点击工具栏View中的按钮,打开扩展详细视图,如图20-5所示,可以看到右边的跟踪堆栈信息,其中图标所示的条目是我们自己应用的代码,双击HelloWorld::init()可进入程序代码,如图所示。





图所示的第33行代码就是泄漏点程序代码了,我们从中不难发现问题。
如果我们想进一步评估它对于内存的占用情况,可以看看Allocations模板的折线图。从图中看到,各种变量的使用内存占用情况,也可以知道某个时刻的内存占用情况。4号区域是Heap(堆)内存占用情况,因为堆内存需要人为释放,而栈内存不用人为管理。

 

事实上,内存泄漏是极其复杂的问题,工具使用是一方面,经验是另一方面。提高经验,然后借助于工具才是解决内存泄漏的根本。

 

 

更多内容请关注最新Cocos图书《Cocos2d-x实战 C++卷》
本书交流讨论网站:http://www.cocoagame.net
更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com
欢迎加入Cocos2d-x技术讨论群:257760386


《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11584534.html

亚马逊:http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

当当:http://product.dangdang.com/23606265.html

互动出版网:http://product.china-pub.com/3770734

 

《Cocos2d-x实战 C++卷》源码及样章下载地址:

源码下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1 

样章下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1

欢迎关注智捷iOS课堂微信公共平台
分享到:
评论

相关推荐

    xcode cocos2d工具包

    对于Cocos2d游戏,可以使用 Instruments 进行性能优化,特别是针对内存使用和CPU占用的分析。 6. **发布与分发** 完成游戏开发后,Xcode内置了App Store Connect的集成,方便提交审核和发布。同时,Cocos2d支持...

    ios下几个常用的cocos2d开发工具v1

    7. **调试与性能分析**:Instruments是Xcode自带的强大调试和性能分析工具,对于优化Cocos2d游戏性能至关重要。开发者可以通过它来追踪内存泄漏,检查CPU使用率,以及分析帧率和渲染性能。 8. **版本控制**:Git是...

    iOS Game Programming with Xcode and Cocos2d(完整版)

    本书全面介绍了使用Xcode集成开发环境和Cocos2d游戏引擎来构建高性能、交互性强的游戏应用的全过程。Cocos2d是一款广泛应用于iOS游戏开发的开源框架,它提供了丰富的功能,包括场景管理、动画、物理引擎、粒子系统等...

    <iPhone & iPad cocos2d游戏开发实战>

    学会使用Xcode的调试工具,如Breakpoints、Profiler和Instruments,可以帮助你定位并修复游戏中的问题。 总的来说,《iPhone & iPad cocos2d游戏开发实战》这本书将带领你全面了解cocos2d框架,从基础到高级,从...

    DoodleDrop cocos2d

    1. Xcode集成:DoodleDrop项目使用Xcode作为开发环境,通过Xcode的调试工具可以理解代码运行过程,找出性能瓶颈并进行优化。 2. 性能分析:利用Instruments等工具对游戏性能进行监控,包括CPU使用率、内存占用等,...

    ios-绘图工具.zip

    同时,使用Xcode的 Instruments 工具可以分析性能瓶颈,提升游戏的运行效率。 这个压缩包可能包含了以上知识点的示例代码,通过学习和实践,开发者可以更好地掌握Cocos2D的绘图技巧,从而在iOS应用或游戏中创建出...

    一个ios找茬游戏源码(未使用cocos2d).zip

    11. 测试与调试:Xcode的内置工具如Instruments,可以帮助开发者进行性能分析、内存泄漏检测和UI测试等,确保游戏在不同设备上的表现。 通过学习和理解这个未使用Cocos2d的找茬游戏源码,开发者可以深入了解iOS原生...

    IOS和Cocos2D编程总结

    - **帧率(FPS)和性能监控**:通过 Instruments 工具监控应用性能,确保游戏运行流畅。 - **纹理打包**:使用TexturePacker将多个小图合并为一个大图,减少绘制调用,提升渲染效率。 - **懒加载和缓存策略**:...

    iphone游戏工程(英文版)

    开发者需要学会分析和调试工具,如Instruments,来定位并解决性能问题。 在阅读《iPhone游戏工程(英文版)》的过程中,配合实际项目练习,将理论知识与实践相结合,是提升游戏开发技能的最佳途径。尽管语言障碍...

    iOS游戏应用源代码——stig-Desdemona-cd9bf2e.zip

    本篇将围绕“stig-Desdemona-cd9bf2e.zip”这个压缩包中的源代码,探讨iOS游戏应用开发的相关知识点,包括Swift编程语言、Xcode集成开发环境、游戏引擎、UI设计以及性能优化等关键领域。 首先,从文件名可以看出,...

    iphone 开发整理

    7. **游戏引擎与框架**: 在开发涉及3D图形的游戏时,开发者可能会选择使用Unity、Unreal Engine或Cocos2d-x等游戏引擎,它们封装了OpenGL ES的使用,提供更高层次的游戏开发工具和生态系统。 8. **内存管理与性能...

    IOS应用源码之【游戏】ABC123.rar

    Xcode的 Instruments工具提供了强大的性能分析和调试功能,可以帮助开发者找出并解决性能瓶颈。 综上所述,"IOS应用源码之【游戏】ABC123.rar"包含的知识点涵盖了Swift编程、游戏引擎使用、UI设计、硬件集成、资源...

    iOS游戏应用源代码——blender-tommyBros-0.1.5-1-g7821299.zip

    开发者可能会利用Instruments等工具进行性能分析,优化内存使用、CPU占用率和帧率,以提供流畅的游戏体验。 8. **测试与调试**:在源代码中,我们可能会发现各种测试用例和断言,这些都是开发者为了确保代码质量而...

    网络游戏-手机游戏开发装置与方法.zip

    开发者需要掌握单元测试、集成测试,以及性能测试的方法,并熟悉相应的调试工具,如Xcode的Instruments或Android Profiler。 九、发布与更新 游戏发布涉及应用商店提交、版本管理、更新策略等。开发者需要熟悉各...

    25个增强iOS应用程序性能的提示和技巧

    在iOS应用开发中,尤其是在处理UITableView和UICollectionView时,正确使用`reuseIdentifier`对于提升性能至关重要。 ##### 实现方式: - 当tableView请求新的cell时,通过`dequeueReusableCellWithIdentifier:`...

    iOS游戏应用源代码——nvd-FeedTheFrog-0f00c33.zip

    9. **测试与调试**:Xcode集成的 Instruments 工具提供了丰富的调试和性能分析功能,帮助开发者定位和修复问题,确保游戏的稳定性和流畅性。 通过对"nvd-FeedTheFrog-0f00c33.zip"源代码的深入研究,我们可以学习到...

    iOS游戏应用源代码——nevyn-overload-0.3-0-gae3b7f5.zip

    了解如何使用Xcode的调试工具如Breakpoint、Instruments等也十分重要。 10. **发布与打包流程**:iOS应用的发布需要遵循App Store Connect的规则,源代码中可能包含打包脚本和配置文件,用于生成IPA包并提交审核。 ...

    iOS游戏应用源代码——hoffrocket-MathKen-db55f4c.zip

    iOS平台提供了 Instruments 工具,可以用来检测内存泄漏、CPU使用率、帧率等问题。开发者可能运用GCD(Grand Central Dispatch)进行多线程优化,使用Metal或OpenGL ES进行图形渲染提升,以及利用惰性加载和对象池来...

    IOS植物大战僵尸

    9. **测试与调试**:游戏开发过程中,开发者会使用Xcode的内置工具进行调试,如Instruments,以检测内存泄漏、性能瓶颈等问题,并进行修复。 10. **App Store发布**:最后,游戏需要符合Apple的App Store指南,进行...

    手机游戏开发案例代码

    12. **测试与调试**:使用Xcode Instruments、Android Studio的Profiler工具进行性能测试和bug调试,确保游戏的质量。 通过研究这些案例,开发者不仅可以学习到具体的编程技巧,还能培养解决问题和设计游戏系统的...

Global site tag (gtag.js) - Google Analytics