翔如菲菲

其实天很蓝,阴云总会散;其实海不宽,此岸连彼岸.

导航

2011年2月25日 #

【转】垃圾回收系列(4):GC性能调优及总结

摘要: 本文为垃圾回收讲座第四篇,也是最后一篇。前三篇(一、二、三)分别介绍了手工管理内存带来的一些问题,一些经典的GC算法以及CLR与JVM在垃圾回收方面的比较。本文将会简单介绍垃圾回收性能调优的话题,以及给大家推荐一些垃圾回收的资料和开源项目。 GC性能调优 无论对于哪方面的调优,数据库调优、网络调优还是垃圾回收调优,其遵循的过程都是一样的:首先要评估现状,当前的状况是什么样的,收集相关的数据; 再次设定一个目标,即我们调优要达到什么目的,而不是盲目的进行调整;然后做一些调优方面的尝试,并对调优的结果进行验证,看看尝试调优的结果如何,最后 再进行一些细微调整。调优的过程不是一蹴而就的,而是我们可能 阅读全文

posted @ 2011-02-25 14:29 翔如飞飞 阅读(589) 评论(0) 推荐(0)

【转】垃圾回收系列(3):CLR与JVM垃圾回收器的比较

摘要: 本文为垃圾回收讲座的第三篇,在前面两篇(一、二)文章里介绍了手工管理内存带来的一些问题,以及一些经典的GC算法。本文我们主要关注微软的CLR与JVM垃圾回收器方面的比较。我们知道CLR和JVM都采用了分代式垃圾回收器,而分代式垃圾回收器则基于以下几点假设: 1. 对象越新,其生存期就越短 2. 对象越老,其生存期就越长 3. 对堆的一部分执行GC比对整个堆执行GC要快 CLR和JVM尽管都采用了分代式垃圾回收器,但是它们在很多处理方面都有些不同:分代机制,大对象堆,回收模式,回收算法,寻找存活对象效率等。 分代机制 在CLR中,对象按年龄可以分为三代:第0代、第1代、第2代,如下图所示: 在这 阅读全文

posted @ 2011-02-25 14:28 翔如飞飞 阅读(397) 评论(0) 推荐(0)

【转】垃圾回收系列(2):几种经典的垃圾回收算法

摘要: 本文是关于垃圾回收讲座的第二篇,第一篇为《垃圾回收系列(1):没有GC,世界将会怎样》。 本文主要关注垃圾回收算法。垃圾回收机制,最早出现于世界上第二元老语言Lisp,Jean E. Sammet曾经说过,Lisp语言最长久的共享之一是一个非语言特征,即代表了系统自动处理内存的方法的术语极其技术——垃圾收集 (GC,Garbage Collection)。接下来我们介绍几种经典的垃圾回收算法,这些算法尽管出现于60、70年代,但是现在的CLR、JVM等上面的垃圾回收器,仍然 使用了它们。 引用计数算法 引用计数(Reference Counting)算法是每个对象计算指向它的指针的数量,当有一 阅读全文

posted @ 2011-02-25 14:27 翔如飞飞 阅读(331) 评论(0) 推荐(0)

【转】垃圾回收系列(1):没有GC,世界将会怎样

摘要: 最近在公司内部做了一次关于垃圾回收的讲座,我打算用几篇文章把讲座的内容整理出来,供大家参考。在开始之前,我们有必要稍微复习一下内存分配的主要方式,大多数主流语言都支持三种内存分配方式: 1. 静态分配:静态变量和全局变量的分配形式 2. 自动分配:在栈中为局部变量分配内存的方法 3. 动态分配:在堆中动态分配内存空间以存储数据的方式 如何管理堆对象的生命周期,正是我们要探讨的话题。从面向对象的角度来看,每个对象的生命周期应该由自己管理,也就是说,作为一个对象,它知道自己 什么时候被创建,什么时候被销毁。然而事实上却不是这样,因为对象之间有相互引用关系,所以对象往往不知道自己什么时候可以宣告死亡 阅读全文

posted @ 2011-02-25 14:26 翔如飞飞 阅读(256) 评论(0) 推荐(0)