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、

  • 相关阅读:
    Comparison of MPTCP & CMT-SCTP
    Wireshark
    MPTCP协议相关分析
    抑郁
    MPTCP 源码分析(七) 拥塞控制
    MPTCP 源码分析(六) 数据重发
    MPTCP 源码分析(五) 接收端窗口值
    MPTCP 源码分析(四) 发送和接收数据
    MPTCP 源码分析(三) 子路径选择
    MPTCP 源码分析(二) 建立子路径
  • 原文地址:https://www.cnblogs.com/xujiahui/p/6502875.html
Copyright © 2011-2022 走看看