Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用
2023-09-14 08:59:50 时间
span >
每个跟踪模板都有不同的用途其中Leaks可以检测内存泄漏点Allocations跟踪模板可以查看内存的使用情况。下面我们通过一个实例介绍一些Instruments工具的使用我们来人为制造一个内存泄漏我们在HelloWorldScene.cpp中修改代码
我们在代码中添加了__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课程http://v.51work6.com
欢迎加入Cocos2d-x技术讨论群257760386
iOS开发:Xcode自带的模拟器常用快捷键的使用 在iOS开发过程中,为了方便起见在测试程序的效果的时候,开发者会使用Xcode自带模拟器进行操作,而且Xcode自带的手机模拟器包含了苹果的所有最新的手机型号尺寸,这样也方便了开发者测试不同机型,但是在电脑Xcode上面的模拟器操作和真机操作还是有很大的不便,如果不知道常用的快捷键,操作起来也不方便,那么本篇博文就来分享一下Xcode自带模拟器的快捷键操作集合,分享给有需要的人。
iOS开发:Xcode报错“Could not insert new outlet connection:Could not find any...”问题的解决方法 在iOS开发过程中会遇到各种各样的问题,有些时候会遇到一些莫名其妙的报错问题,而且会觉得很无厘头,尤其是苹果的Xcode会出现各种不可抗拒的情况,网速不好会影响Xcode的正常使用,时间长不打开Xcode也会出现问题,一般这种情况下果断关闭Xcode再重新打就好了,那么本篇博文就来分享一下需要关闭Xcode再重新打开就好的情况,一般情况下在没有错误操作的时候还会出现这种错误就一定是Xcode的问题,那么接下来就来说说这种情况。
iOS开发:Mac电脑Xcode里面添加导入真机调试包的步骤 在Xcode使用的过程中,有时候会因为一些系统原因或者是不想频繁升级电脑上的xcode版本而需要进行导入操作,尤其是苹果每次发布新系统之后,最让人头大的就是更新xcode来适用苹果最新的包内容,不然就会影响开发时候的测试以及上线。但是像博主这样比较懒的狗程序来说,真的不想每次苹果发布更新iOS系统之后就立马升级更新xcode,那么就用到了在现有版本的xcode里面导入最新的iOS系统真机调试包就可以了。
关东升 国内著名iOS/Cocos技术作家,iOS技术顾问,Cocos最有价值专家(CVP),智捷课堂首席培训专家。担任51CTO社区iOS技术顾问。 著有多部移动开发畅销书。
每个跟踪模板都有不同的用途其中Leaks可以检测内存泄漏点Allocations跟踪模板可以查看内存的使用情况。下面我们通过一个实例介绍一些Instruments工具的使用我们来人为制造一个内存泄漏我们在HelloWorldScene.cpp中修改代码
bool HelloWorld::init() if ( !Layer::init() ) return false; __String *s = new __String();
}
我们在代码中添加了__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课程http://v.51work6.com
欢迎加入Cocos2d-x技术讨论群257760386
《Cocos2d-x实战 C++卷》现已上线各大商店均已开售
京东http://item.jd.com/11584534.html
当当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课堂微信公共平台iOS开发:Xcode自带的模拟器常用快捷键的使用 在iOS开发过程中,为了方便起见在测试程序的效果的时候,开发者会使用Xcode自带模拟器进行操作,而且Xcode自带的手机模拟器包含了苹果的所有最新的手机型号尺寸,这样也方便了开发者测试不同机型,但是在电脑Xcode上面的模拟器操作和真机操作还是有很大的不便,如果不知道常用的快捷键,操作起来也不方便,那么本篇博文就来分享一下Xcode自带模拟器的快捷键操作集合,分享给有需要的人。
iOS开发:Xcode报错“Could not insert new outlet connection:Could not find any...”问题的解决方法 在iOS开发过程中会遇到各种各样的问题,有些时候会遇到一些莫名其妙的报错问题,而且会觉得很无厘头,尤其是苹果的Xcode会出现各种不可抗拒的情况,网速不好会影响Xcode的正常使用,时间长不打开Xcode也会出现问题,一般这种情况下果断关闭Xcode再重新打就好了,那么本篇博文就来分享一下需要关闭Xcode再重新打开就好的情况,一般情况下在没有错误操作的时候还会出现这种错误就一定是Xcode的问题,那么接下来就来说说这种情况。
iOS开发:Mac电脑Xcode里面添加导入真机调试包的步骤 在Xcode使用的过程中,有时候会因为一些系统原因或者是不想频繁升级电脑上的xcode版本而需要进行导入操作,尤其是苹果每次发布新系统之后,最让人头大的就是更新xcode来适用苹果最新的包内容,不然就会影响开发时候的测试以及上线。但是像博主这样比较懒的狗程序来说,真的不想每次苹果发布更新iOS系统之后就立马升级更新xcode,那么就用到了在现有版本的xcode里面导入最新的iOS系统真机调试包就可以了。
关东升 国内著名iOS/Cocos技术作家,iOS技术顾问,Cocos最有价值专家(CVP),智捷课堂首席培训专家。担任51CTO社区iOS技术顾问。 著有多部移动开发畅销书。
相关文章
- Xcode模拟器中无法播放音频文件的原因分析
- 【原创】Newlife.XCode的常见功能使用(一)查询与数据初始化
- [C++] 用Xcode来写C++程序[7] Class
- 怎样创建一个Xcode插件(part 1)
- Xcode重构功能怎么用我全告诉你
- Xcode调试LLDB
- 【目录】Newlife XCode组件相关文章目录
- xcode 改动整个项目名
- iOS Xcode, 解决“Could not insert new outlet connection”的问题。
- iOS Sprite Kit教程之编敲代码以及Xcode的介绍
- Xcode 6 AutoLayout Size Classes
- 408笔记——数据结构(C语言版)(将书上例题用C语言写出实例来,可以直接在IDE(Xcode)上运行)