性能优化程序员首页投稿(暂停使用,暂停投稿)

instruments(03)之Leak(内存泄漏)

2016-06-07  本文已影响677人  dogs_five

此文章主要是分析程序出现的内存泄漏问题,是基于上一篇博客instruments(02)之Allocations附上地址http://www.jianshu.com/p/4f1f3c80186e
首先需要注意以下几件事:leak并不是万能的,也就是说有些内存泄漏问题根本查找不出来,而典型的代表就是UI中的控件。如果leak查找不到内存泄漏并不能代表没有内存泄漏,但是如果查找到了内存泄漏,说明程序肯定有内存泄漏。
如果出现了leak查找不到的内存问题,这时候我们就需要结合Allocations来查找。
接下来新建一个工程,将开发环境设置为MRC。代码如下:



@interface ViewController ()


@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self loadLab];
    [self loadImage];
    [self loadData];
}

- (void)loadLab{
    UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
    [self.view addSubview:lab];
}

- (void)loadImage{
    NSString *s = [[NSBundle mainBundle]pathForResource:@"1.png" ofType:nil];
    UIImage *image = [[UIImage alloc]initWithContentsOfFile:s];
    NSLog(@"%@",image);
}

- (void)loadData{
    NSArray *arr = [[NSArray alloc]initWithObjects:@"123",@"34",nil];
    NSLog(@"%@",arr);
}

command + i进入如下界面:


内存泄漏图.png

虽然上图中的lab也没有release,但是却没有提示内存泄漏,对UI中的控件,通过leak并不能寻找到内存泄漏问题。因此养成一个良好的编程习惯显得尤为重要。
那么一旦是控件出现的内存问题,我们怎么查找呢?

上一篇下一篇

猜你喜欢

热点阅读