摘要: 一、串行GC串行GC是Java SE 5 和 6里默认的GC。年轻代和老年代的垃圾收集都是串行的。此外,它使用的是标记-压缩算法。这种方法将存留下来的老内存移到堆的前端,便于新内存申请得到位于堆尾的连续内存块。这种内存的压缩使得在堆上申请内存块变得更迅速。 串行GC用的多,暂停时间短,还能仅仅利用一个虚拟进程进行垃圾收集工作,直到今天,它依然坚挺于现在的硬件之上,管理着大量非凡的应用,却只要比较低的代价。二、并行GC 在年轻代使用多线程进行垃圾收集。默认情况下,在N核CPU主机上,它使用的垃圾收集器线程有N个。在单核CPU的主机上,它和串行GC的性能相当。它使用的算法如下: 年轻代:拷贝算法( 阅读全文
posted @ 2014-02-14 18:34 viruseeee 阅读(222) 评论(2) 推荐(0) 编辑
摘要: 拓荒时代国内的程序员大多是在 Java 语言中第一次感受到垃圾收集技术的巨大魅力的,许多人也因此把 Java 和垃圾收集看成了密不可分的整体。但事实上,垃圾收集技术早在 Java 语言问世前 30 多年就已经发展和成熟起来了, Java 语言所做的不过是把这项神奇的技术带到了广大程序员身边而已。如果一定要为垃圾收集技术找一个孪生兄弟,那么, Lisp 语言才是当之无愧的人选。 1960 年前后诞生于 MIT 的 Lisp 语言是第一种高度依赖于动态内存分配技术的语言: Lisp 中几乎所有数据都以“表”的形式出现,而“表”所占用的空间则是在堆中动态分配得到的。 Lisp 语言先天就具有的动态内 阅读全文
posted @ 2014-02-14 17:23 viruseeee 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 关于字符串的这三个类,在使用中频繁地接触到,现在对它们做一个总结。这三个类实现了接口CharSequence,而StringBuffer和StringBuilder还同时继承于AbstractStringBuilder这个父类。Java里的String类具体用法不具体说,现在主要讲一下String需要注意的一些问题。字符串常量池是String里的一个重要机制,通过字符串常量池,我们可以不用再为重复的字符串分配空间,有效地节省了资源。但是,如果不了解这个机制的话会导致很多的问题。例如: String A = "tajxrey"; String B = "tajxre 阅读全文
posted @ 2014-02-13 15:06 viruseeee 阅读(310) 评论(0) 推荐(0) 编辑
摘要: JavaParser下载地址:http://code.google.com/p/javaparser/downloads/list 刚开始接触的时候觉得和JDT里的Parser类不太一样。查了一下WiKi,发现它访问编译单元成员,需要调用相应子元素对应的Visitor类的visit()方法。此方法可以通过复写来实现自己需要的功能。我需要的功能是将编译单元里的所有MethodDeclaration取出,因此利用传递句柄的方式,实现代码如下: 1 public static List getMethodList(CompilationUnit cu) { 2 List metho... 阅读全文
posted @ 2014-02-11 09:25 viruseeee 阅读(12773) 评论(0) 推荐(0) 编辑
摘要: 1 import java.io.BufferedReader; 2 import java.io.FileReader; 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.util.Hashtable; 6 7 /** 8 * 利用哈希表进行key值比较 9 * @author taojx 10 * 11 */ 12 public class HashTableComparator { 13 14 public static long RSHash... 阅读全文
posted @ 2014-01-13 11:10 viruseeee 阅读(278) 评论(0) 推荐(0) 编辑