IOS 内存管理简介

来源:互联网 发布:php时间戳转换成日期 编辑:程序博客网 时间:2024/05/22 05:50

关于内存管理

翻译的原文:About Memory Management


应用程序的内存管理是指,在程序运行时,分配内存、使用内存、并释放内存。一个编写良好的程序使用尽可能少使用内存。在objective - c中,它还可以被认为分配内存有限资源的所有权在许多块数据和代码。当你已经完成了工作通过这个向导,您将有知识你需要管理你的应用程序的内存通过显式地管理生命周期的对象和释放不需要的时候。

 

尽管内存管理通常被认为在单个对象的级别,你的目标实际上是管理对象图。你想确保你没有更多的内存中的对象比你的实际需要。

objective - c提供了两种方法的应用程序内存管理。

 

1 manual retain-release(MRR)(手动保留释放)。显式地管理内存的对象通过追踪对象的所有权。通过引用计数实现,基础类NSObject会同提供运行时环境。

2 Automatic Reference Counting,(ARC,自动引用计数器)

系统使用相同的引用计数系统作为MRR,但它插入合适的内存管理方法要求您在编译时。强烈建议您使用ARC在新项目。如果你使用ARC,通常不需要理解底层实现,本文档中描述的,尽管它可能在某些情况下是有益的。关于更多ARC(https://developer.apple.com/library/mac/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011226)

如果你打算写代码为iOS,您必须使用显式的内存管理(本指南的主题)。此外,如果你打算写库例程、插件、或共享代码的代码可能被加载到或垃圾收集或非垃圾收集过程你想写你的代码使用的内存管理技术在本指南描述。(确保你然后测试您的代码在Xcode,禁用和启用垃圾收集)。

 

好的内存管理的方法

有两种主要类型或问题,由于不正确的内存管理:

l  释放或者重写当前正在使用的数据。

这会引起内存混乱,导致的结果是应用程序崩溃,或者损坏用户数据。

l  没有释放不再使用的数据,会导致内存泄露。

内存泄露是已经分配的内存没有释放。甚至再也没有用过这个数据。泄漏导致你的应用程序使用的内存数量不断增加,从而可能导致可怜的系统性能或(iOS)您的应用程序被终止。

考虑内存管理的角度,从引用计数,然而,经常适得其反,因为你倾向于考虑内存管理方面的实现细节,而不是从你的实际的目标。相反,你应该把内存管理的角度,从对象所有权和对象图。

从引用计数考虑内存管理,经常会适得其反。因为你主要考虑内存管理的细节,然而这不失最住的目标。相反,你应该从对象所有权和对象图考虑内存管理。