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

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

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

bool HelloWorld::init()
{
	if ( !Layer::init() )
	{
		return false;
	}
    __String *s = new __String();

    log("%s",s->getCString());

… …

	return true;
}

我们在代码中添加了__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课堂微信公共平台

时间: 2024-10-31 16:31:21

Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用的相关文章

Android高级开发之性能优化典范

本章介绍android高级开发中,对于性能方面的处理.主要包括电量,视图,内存三个性能方面的知识点. 1.视图性能 (1)Overdraw简介 Overdraw就是过度绘制,是指在一帧的时间内(16.67ms)像素被绘制了多次,理论上一个像素每次只绘制一次是最优的,但是由于重叠的布 局导致一些像素会被多次绘制,而每次绘制都会对应到CPU的一组绘图命令和GPU的一些操作,当这个操作耗时超过16.67ms时,就会出现掉帧现象,表现为应用卡顿,所以对重叠不可见元素的重复绘制会产生额外的开销,需要尽量减

Android编程开发之性能优化技巧总结_Android

本文详细总结了Android编程开发之性能优化技巧.分享给大家供大家参考,具体如下: 1.http用gzip压缩,设置连接超时时间和响应超时时间 http请求按照业务需求,分为是否可以缓存和不可缓存,那么在无网络的环境中,仍然通过缓存的httpresponse浏览部分数据,实现离线阅读. 2.listview 性能优化 1).复用convertView 在getItemView中,判断convertView是否为空,如果不为空,可复用.如果couvertview中的view需要添加listern

Android编程开发之性能优化技巧总结

本文详细总结了Android编程开发之性能优化技巧.分享给大家供大家参考,具体如下: 1.http用gzip压缩,设置连接超时时间和响应超时时间 http请求按照业务需求,分为是否可以缓存和不可缓存,那么在无网络的环境中,仍然通过缓存的httpresponse浏览部分数据,实现离线阅读. 2.listview 性能优化 1).复用convertView 在getItemView中,判断convertView是否为空,如果不为空,可复用.如果couvertview中的view需要添加listern

Cocos开发中性能优化工具介绍之使用Windows任务管理器

说到Windows平台我们很快就想到了Visual Studio 2012然而Visual Studio 2012在这方面没有很好的工具.如果我们只是想知道大体上内存.CPU等在某一事件前后变化情况我们可以使用Windows任务管理器.Windows任务管理器对于很多用户都不陌生自从有Windows操作系统以来这个工具就伴随着Windows.打开任务管理器方法也有很多在Windows7和Windows8平台可以使用Ctrl+Shift+Esc 组合键调出也可通过Ctrl+Alt+Delete 组

Android高级开发之性能优化典范_Android

本章介绍android高级开发中,对于性能方面的处理.主要包括电量,视图,内存三个性能方面的知识点. 1.视图性能 (1)Overdraw简介     Overdraw就是过度绘制,是指在一帧的时间内(16.67ms)像素被绘制了多次,理论上一个像素每次只绘制一次是最优的,但是由于重叠的布 局导致一些像素会被多次绘制,而每次绘制都会对应到CPU的一组绘图命令和GPU的一些操作,当这个操作耗时超过16.67ms时,就会出现掉帧现象,表现为应用卡顿,所以对重叠不可见元素的重复绘制会产生额外的开销,需

Oracle数据库设计开发阶段性能优化策略

引言 Oracle是目前使用最为广泛的大型数据库管理系统,提高Oracle数据库系统的运行效率,是整个计算机信息系统高效运转的前提和保证.影响Oracle数据库应用系统性能的因素很多,既有软件方面的因素,也包括数据运行的硬件环境.网络环境.数据库管理和维护方面的因素等.数据库系统设计开发阶段是Oracle应用优化的最佳阶段,也是主动优化阶段,能达到以最小成本获得最大性能增益的目的.通过对其逻辑存储结构和物理存储结构设计进行优化,使之在满足需求条件下,时空开销性能最佳,可以解决数据库系统运行过程中

stb前端开发js性能优化总结

  js性能优化 javascript是一种解释型语言,性能无法达到和C.C++等编译语言的水平,但还是有一些方法来改进. 1.循环 JavaScript中的循环方式有for(;;).while().for(in)3种.其中for(in)的效率极差,因为for(in)执行过程中需要查询散列键.for(;;)和while()比较,while循环的效率要优于for(;;). 2.局部变量和全局变量 局部变量的访问速度更快,因为全局变量其实是全局对象的成员,而局部变量是放在函数的堆栈当中的. 3.不使

【IOS-COCOS2D-X 游戏开发之十三】详细讲解在XCODE中利用预编译并通过JNI调用ANDROID的JAVA层代码(COCOS2DX里访问调用ANDROID函数)!

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/725.html 很多看过之前Himi的[iOS-cocos2d-X 游戏开发之七]整合Cocos2dX的Android项目到Xcode项目中,Xcode编写&编译代码,Android导入打包运行即可! 博文的童鞋都在问我如何在Xcode中能调用Java的函数,比如在Android端需要加入广告.支付.等第三方平台或者

Cocos开发中性能优化工具介绍之Visual Studio内存泄漏检测工具——Visual Leak Detector

那么在Windows下有什么好的内存泄漏检测工具呢微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测功能我们可以使用第三方工具Visual Leak Detector以下简称vld. vld工具是VC++环境下一款小巧易用.免费开源的内存泄漏检测工具vld可以显示导致内存泄漏的完整内存分配调用堆栈.vld的检测报告能够对每个内存泄漏点提供完整的堆栈跟踪并且包含其源文件及行号信息. 安装过程是先在到地址http://vld.codeplex.com/下载vld安装文件然后进行