摘要:
一、串行GC串行GC是Java SE 5 和 6里默认的GC。年轻代和老年代的垃圾收集都是串行的。此外,它使用的是标记-压缩算法。这种方法将存留下来的老内存移到堆的前端,便于新内存申请得到位于堆尾的连续内存块。这种内存的压缩使得在堆上申请内存块变得更迅速。 串行GC用的多,暂停时间短,还能仅仅利用一个虚拟进程进行垃圾收集工作,直到今天,它依然坚挺于现在的硬件之上,管理着大量非凡的应用,却只要比较低的代价。二、并行GC 在年轻代使用多线程进行垃圾收集。默认情况下,在N核CPU主机上,它使用的垃圾收集器线程有N个。在单核CPU的主机上,它和串行GC的性能相当。它使用的算法如下: 年轻代:拷贝算法( 阅读全文
摘要:
拓荒时代国内的程序员大多是在 Java 语言中第一次感受到垃圾收集技术的巨大魅力的,许多人也因此把 Java 和垃圾收集看成了密不可分的整体。但事实上,垃圾收集技术早在 Java 语言问世前 30 多年就已经发展和成熟起来了, Java 语言所做的不过是把这项神奇的技术带到了广大程序员身边而已。如果一定要为垃圾收集技术找一个孪生兄弟,那么, Lisp 语言才是当之无愧的人选。 1960 年前后诞生于 MIT 的 Lisp 语言是第一种高度依赖于动态内存分配技术的语言: Lisp 中几乎所有数据都以“表”的形式出现,而“表”所占用的空间则是在堆中动态分配得到的。 Lisp 语言先天就具有的动态内 阅读全文