WEB开发网
开发学院手机开发iPhone 开发 iPhone 内存泄露:Leaks 工具指引 阅读

iPhone 内存泄露:Leaks 工具指引

 2010-08-22 00:45:00 来源:WEB开发网   
核心提示:最近常使用Instruments这个工具,我发现它对追踪游戏中的内存泄露非常有帮助,iPhone 内存泄露:Leaks 工具指引,自从发现Instruments如此有用后,我就觉得写一篇文章介绍如何使用它来追踪内存泄露对其他人也会有帮助,当你启动 Instruments,你可以从一堆 Instruments 工具里选择

最近常使用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”工具:

1 2 3 4  下一页

Tags:iPhone 内存 泄露

编辑录入:coldstar [复制链接] [打 印]
赞助商链接