zoukankan      html  css  js  c++  java
  • iOS基础

    一、内存的重要性

    程序是否可用的最根本的制约因素。

    十分影响用户体验。

    程序的crash有很多情况都是内存的原因。

    二、iOS平台内存警告机制

    iOS系统不支持虚拟内存,一旦出现内存不足的情况,iOS系统会通知所有app,无论是前台的还是挂起的,都会收到memory warning的通知,一旦app收到memory warning的通知就应该回收占用内存较大的对象。

    内存警告测试方法:iOS模拟器->硬件->模拟内存警告。

    iOS6废除了viewDidUnload函数,所以要把之前viewDidUnload中做的事情放在didReceiveMemoryWarning

    三、静态分析工具——Analyze

    Analyze是一个编译和分析工具,可以发现编译中的warning,内存泄露隐患,有时还可以查处逻辑上的问题。

    内存泄露隐患提示:

    Potential Leak of an object allocated on line ……

    数据赋值隐患提示:

    The left operand of …… is a garbage value;

    对象引用隐患提示:

    Reference-Counted object is used after it is released;

    Analyze发现的问题值得我们注意,但它只是提出隐患,并不一定就存在问题。

    Analyze运行方法:Product->Analyze,或者长按运行按钮,选择Analyze

    四、动态分析工具——Instrument

    启动instrumentXcode->product->profile,选择相应的工具,点击profile按钮。

    显示所有instrument工具:window->library.下面的按钮是调整显示方式,搜索栏是搜素某一工具。上面可以按某一功能选择工具。还可以按自己的方式组织instrument工具。我们这里只介绍和内存相关的Allocationsleaks

    Allocations:跟踪内存分配的工具

    Category:通常是一个Core Foundation对象、OC类等。

    Live Bytes:当前活动内存大小。

    #Living:存在的对象个数。

    #Transient:已经销毁的对象个数。

    Overall Bytes:所开辟的所有内存。

    #Overall:所创造出来的所有对象个数。

    #AllocationsNet/Overall)当前和全部的比值。

    Leaks:跟踪内存泄露的工具

  • 相关阅读:
    【Spring__ApplicationContext】SpringContextHolder
    【Js__ztree】ztree使用
    【Docker__镜像】自定义镜像
    【Docker__容器命令】
    【Docker__安装】
    【Redis__安装】Redis简单安装和使用
    【Redis__集群】Redis集群的搭建
    RCWL0801激光测距传感器模块驱动(基于传感器管理组件)
    RCWL0516微波雷达传感器(基于传感器管理组件)
    热敏电阻温度传感器(基于传感器管理组件)
  • 原文地址:https://www.cnblogs.com/monicaios/p/3541095.html
Copyright © 2011-2022 走看看