iOS开发笔记Phone内存泄露:Leaks工具指引
2010-10-13 02:07:00 来源:本站整理【翻译】找到iPhone内存泄露:Leaks工具指引
原文地址:http://www.mobileorchard.com/find-iphone-memory-leaks-a-leaks-tool-tutorial/
see also:http://www.iposei.com/?p=127
我的游戏开发接近了尾声,最近常使用Instruments这个工具。我发现它对追踪游戏中的内存泄露非常有帮助。自从发现Instruments如此有用后,我就觉得写一篇文章介绍如何使用它来追踪内存泄露对其他人也会有帮助。
什么是内存泄露?我为什么要关心内存泄露?
…此段省略…
访问维基百科可以获得更多关于内存泄露的信息。
我如何知道内存泄露了?
一些内存泄露可以很容易地通过阅读代码来发现,另一些就要困难点了,这就是为什么需要Instruments的原因。Instruments有一个“Leaks”工具,它会准确地告诉你什么地方发生了内存泄露,以便你能定位和修复泄露问题。
例子程序
我写了一个例子程序,它有两个地方会发生内存泄露,一个在Objective-C 视图控制器中,另一个在C++类中。例程可以从这里获得。下边的代码是从例程里摘录的,包含了我们需要追踪内存泄露的代码。
// Leaky excerpts ? see GitHub for complete source
- (void)viewDidLoad {
[super viewDidLoad];
LeakyClass* myLeakyInstance = new LeakyClass();
delete myLeakyInstance;
mMyLeakyString = [[NSString alloc] initWithUTF8String:”I’m a leaky string.”];
[self doSomethingNow];
}
- (void) doSomethingNow
{
mMyLeakyString = [[NSString alloc] initWithUTF8String:
“Look, another alloc, but no release for first one!”];
}
// Leaky excerpts ? see GitHub for complete source
LeakyClass::LeakyClass()
{
mLeakedObject = new LeakedObject();
}
LeakyClass::~LeakyClass()
{
}
我会先在Debug模式编译InstrumentsTest,并在iPhone上运行。完成这步,我会启动Instruments。
当你启动Instruments,你可以从一堆Instruments工具里选择你需要的。在左手边选择iPhone,在右手边的图标里双击“Leaks”工具:
更多精彩
赞助商链接