zoukankan      html  css  js  c++  java
  • iOS—— iOS 内存管理:增长+泄漏

    1、如果是循环中局部变量data没有释放导致的,给NSData 手动添加释放池

    @autoreleasepool {
          your code    
       }

    2、url 转变字典key值的时候出现内存暴增!

    //设置字符串
    NSString *urlStr = @"http://120.25.226.186:32812/resources/videos/minion_10.mp4";
    
    //转变url
    NSURL *url = [NSURL URLWithString:urlStr];
    
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    
    //absoluteString 直接将url变为字符串当作key的话 就会出现 内存暴增,
       如果直接将urlstr当作key的话,就不会出现
    dict[url.absoluteString] = @"ZYCoderr";
    while (1) {
        NSString *value = dict[url.absoluteString];
    }

    同样 在循环中创建字符串时

    低内存版:

    while (1) {

        NSString *a = [[NSString alloc] initWithFormat:@"asdfasdfasfasdf"];
    }

    高内存版

    while (1) {
        NSString *a = [NSString stringWithFormat:@"asdfasdfasfasdf"];
    }
    先看absoluteString的属性声明,readonly && copy,看到两个属性,是一个计算值。
    @property (readonly, copy) NSString *absoluteString;
    
    autorelease的值在循环中会大量消耗内存,一般会使用autoreleasepool来降低内存峰值。
    
    如:
    @autoreleasepool {
            NSString *value = dict[url.absoluteString];
        }
    原因

    3、

  • 相关阅读:
    Core Data
    scrollViews
    网络通信
    UIView
    textView取消键盘
    AFNetworking转载
    多线程
    css3[转载][菜单导航] 带有记忆功能的多页面跳转导航菜单
    jQuery翻牌或百叶窗效果
    jQuery联动日历(三)完成
  • 原文地址:https://www.cnblogs.com/xujiahui/p/6502875.html
Copyright © 2011-2022 走看看