gpt4 book ai didi

ios - 如何使用 Xcode 中的仪器检查堆内存?

转载 作者:可可西里 更新时间:2023-11-01 06:10:16 24 4
gpt4 key购买 nike

我正在尝试使用 Xcode 中的工具分析泄漏。这是我正在尝试的示例代码。

+(NSString *) getUniqueFileName
{
NSDate *time = [NSDate date];
NSDateFormatter* df = [NSDateFormatter new];
[df setDateFormat:@"MMddyyyyhhmmssSSS"];
NSString *timeString = [df stringFromDate:time];
NSString *fileName = [NSString stringWithFormat:@"%@", timeString ];
//[time release];
// [df release];
// [timeString release];
return fileName ;
}

我每次拍摄照片时都使用这种方法来生成文件名。所有变量都是他的方法的本地变量。如果我在获取文件名后尝试释放时间、df、时间字符串,我会收到发送到已释放实例的消息。我确信如果我不释放这些变量,内存就会泄漏。我尝试了仪器并得到了以下结果,这就是它。
instruments leaks]![screensshot from instruments showing memory leaks

现在我的问题是 79.6% 的红色高亮行是什么意思? 20.4% 黄色行突出显示?一般来说,红色是危险的。但是 % 显示了什么?它是如何计算的?当我检查调用树时,我会得到一个名为“Leaks”的特定方法列,并将包含 100、234、560、2345 等一些数字。这个数字说明了什么。帮帮我。如果有人能为我提供了解乐器的良好链接,我将不胜感激。

最佳答案

为了解释屏幕截图中的百分比,在 getUniqueFileName: 中分配的泄漏内存的 79.6% 是在代码的红行中分配的。 getUniqueFileName: 中分配的泄漏内存的 20.4% 是在黄色代码行中分配的。红色表示百分比高。它可能危险也可能不危险。

为了解释“泄漏”列,它会告诉您方法中的泄漏数量以及该方法调用的任何函数。这并不一定意味着方法本身有那么多漏洞。例如,Cocoa 和 Cocoa Touch 应用程序以 main() 函数开始。如果 main() 函数在 Leaks 列中的值为 100,则表示应用有 100 次内存泄漏,而不是 main() 有 100 次内存泄漏。

关于ios - 如何使用 Xcode 中的仪器检查堆内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18335057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com