Cocos开发中性能优化工具介绍(一):Xcode中Instruments工具使用
来源:互联网 发布:淘宝的维度是什么意思 编辑:程序博客网 时间:2024/05/16 06:28
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(堆)内存占用情况,因为堆内存需要人为释放,而栈内存不用人为管理。
事实上,内存泄漏是极其复杂的问题,工具使用是一方面,经验是另一方面。提高经验,然后借助于工具才是解决内存泄漏的根本。
第一次使用转载:http://www.cocos.com/doc/tutorial/show?id=1837
- Cocos开发中性能优化工具介绍(一):Xcode中Instruments工具使用
- Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用
- Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用
- Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用
- Cocos开发中性能优化工具介绍之使用Windows任务管理器
- Cocos开发中性能优化工具介绍之Visual Studio内存泄漏检测工具Visual Leak Detector
- Cocos开发中性能优化工具介绍之Visual Studio内存泄漏检测工具——Visual Leak Detector
- Cocos开发中性能优化工具介绍之Visual Studio内存泄漏检测工具——Visual Leak Detector
- XCode中 instruments 工具使用
- Cocos2dx 学习笔记30 Cocos开发中性能优化工具(三):Visual Studio内存泄漏检测工具(Visual Leak Detector)
- Android 中性能优化工具之Hierarchy Viewer使用总结
- Android 中性能优化工具之TraceView使用总结
- Android 中性能优化工具之Hierarchy Viewer使用总结
- instruments xcode自带调试工具 iOS性能优化:Instruments使用实战
- Xcode中Instruments 的工具模块
- 性能优化Instruments-Leaks工具使用
- 性能优化Instruments-Allocations工具使用
- IOS开发工具介绍之Xcode开发工具使用
- String 空格补位
- php扩展函数
- 彼得·蒂尔:别浪费你的无知,去做那些没人做过的事
- plugman简单使用之cordova插件创建
- Android.mk简单的使用
- Cocos开发中性能优化工具介绍(一):Xcode中Instruments工具使用
- 微信开发__入门
- Android 自动生成的R类
- maven 创建struts2简单项目
- 几个Linux命令
- SpringMVC之ContentNegotiatingViewResolver解析器之实例分析
- 解决安卓4.4适配--获取不到图库url的BUG
- Android 日常开发总结的技术经验 60 条
- poj1178Camelot(floyd最短路算法+枚举)