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、

  • 相关阅读:
    promise
    ES6中的类
    css基础知识
    ES6数据解构:set map 的介绍
    ES6对象的拓展
    ES6函数的拓展
    ES6数组的拓展
    ES6字符串和数值的扩展
    webpack的三种运行方式
    Mysql数据增删改操作以及复制表小技巧
  • 原文地址:https://www.cnblogs.com/xujiahui/p/6502875.html
Copyright © 2011-2022 走看看