iOS/MonoTouch有了新的垃圾回收器和内存分析器
标签:
ios
monotouch
垃圾回收
| 发表时间:2012-02-21 21:12 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117
针对iOS的MonoTouch目前支持了分代式垃圾回收器(generational garbage collector)SGen。直到不久之前,Sgen还只是完整版本Mono中的一个实验性部分。伴随着垃圾回收器一同到来的,还有一个为iOS准备的内存分析器(Memory Profiler),它可以从MonoDevelop集成开发环境中访问到。
分代式垃圾回收器Sgen取代了Mono中传统的 Boehm垃圾回收器。虽然Sgen预计会有更好的性能,但其保守式扫描仍然会给它带来一些阻碍。预计将来Sgen会切换到 精确的堆栈标记系统,这样应当可以大幅度减少产生的内存碎片。
iOS分析器支持两种模式,默认模式是堆分析模式,在该模式中内存快照可以根据需要或者触发器进行采集,而该触发器可以设置成一定数量的垃圾收集器周期或者基于时间的时间间隔。此外,该分析器还包含了一些标准工具,如对比快照和查找内存中的对象位置。
性能分析支持统计抽样,以及精确性虽佳但速度不足的进入/离开事件记录。统计抽样采集应用程序快照,并根据每个方法被采集器抓取的频度对它们的速度进行评估。从字面上看,进入/离开事件记录就是在函数每次开始或完成时记录一条日志。它虽然提供了时间花费的完整记录,但会带来严重的性能开销。这种模式同样能够捕获与对象分配相关的堆栈跟踪。
MonoDevelop 2.8.5和MonoTouch 5.1.1都规定使用该工具。而对于个别项目,必须激活调试、分析和SGen垃圾回收器选项。
查看英文原文: A New Garbage Collector and Memory Profiler for iOS/MonoTouch
相关 [ios monotouch 垃圾回收] 推荐:
针对iOS的MonoTouch目前支持了分代式垃圾回收器(generational garbage collector)SGen. 直到不久之前,Sgen还只是完整版本Mono中的一个实验性部分. 伴随着垃圾回收器一同到来的,还有一个为iOS准备的内存分析器(Memory Profiler),它可以从MonoDevelop集成开发环境中访问到.
jvm垃圾回收
- Cano - 淘宝共享数据平台 tbdata.org在jvm中堆空间划分为三个代:年轻代(Young Generation)、年老代(Old Generation)和永久代(Permanent Generation). 年轻代和年老代是存储动态产生的对象. 永久带主要是存储的是java的类信息,包括解析得到的方法、属性、字段等等. 我们这里讨论的垃圾回收主要是针对年轻代和年老代.
JVM 垃圾回收算法
- - 码蜂笔记《深入理解Java虚拟机:JVM高级特性与最佳实践》-笔记. 垃圾回收,Garbage Collection,简称GC. 判断对象是否存活一般有两种方式:. 引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收. 此方法简单,无法解决对象相互循环引用的问题.
Java中的垃圾回收
- - Java译站前文中对标记删除算法的介绍更多还是偏理论性质的. 实践中,为了更好地满足现实的场景及需求,还需要对算法进行大量的调整. 举个简单的例子,我们来看下JVM需要记录哪些信息才能让我们得以安全地分配对象空间. 碎片及整理(Fragmenting and Compacting). JVM在清除不可达对象之后,还得确保它们所在的空间是可以进行复用的.
Java垃圾回收调优
- - 编程语言 - ITeye博客在Java中,通常通讯类型的服务器对GC(Garbage Collection)比较敏感. 通常通讯服务器每秒需要处理大量进出的数据包,需要解析,分解成不同的业务逻辑对象并做相关的业务处理,这样会导致大量的临时对象被创建和回收. 同时服务器如果需要同时保存用户状态的话,又会产生很多永久的对象,比如用户session.
谈谈ActionScript垃圾回收(下)
- Tomyail - Kevin Cao's Blog前文我们介绍了GC的工作机制和帮助GC更好工作的最佳实践. 其实只要我们遵守谁创建谁清理的原则来管理对象,就能基本上避免回收失败,也就是我们通常说的内存泄漏问题. 但是在实际项目中我们还会看到各种原因引起的内存泄漏,接下来就让我们一起来找出病因. 首先我们需要观察症状,也就是内存的使用曲线. 排查的方法是反复执行一些创建和删除对象的方法、反复加载和卸载子文件.
谈谈ActionScript垃圾回收(上)
- Jia - Kevin Cao's Blog在《给AS程序员的一点建议一文》中我提到了释放资源的重要性. 最近在一些项目过程中我又对这方面有了更多的理解,在此希望能够分享给大家. 首先让我们来回顾一下关于垃圾回收(Garbage Collection,下文简称GC)的一些知识. 要阅读本文,你需要对GC机制有些基本认识. 在ActionScript中,我们没有API可以直接删除一个对象,也不能控制Player进行GC.
JVM垃圾回收(GC)原理
- kill - yiihsia[互联网后端技术]_yiihsia[互联网后端技术]引用计数(Reference Counting). 原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数. 垃圾回收时,只用收集计数为0的对象. 此算法最致命的是无法处理循环引用的问题. 标记-清除(Mark-Sweep). 第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除.
HotSpot 垃圾回收算法实现
- - 码蜂笔记《深入理解Java虚拟机:JVM高级特性与最佳实践》-笔记. 在可达性分析期间整个系统看起来就像被冻结在某个时间点上,不可以出现分析过程中对象引用关系还在不断变化的情况. 一致性要求导致GC进行时必须停顿所有Java执行线程. 即使在号称不会发生停顿的CMS收集器中,枚举根节点时也是必须停顿的. HotSpot使用的是准确式GC,当执行系统停顿下来后,并不需要一个不漏地检查完所有执行上下文和全局的引用位置,这是通过一组称为OopMap的数据结构来达到的.