banq大哥,请教java垃圾收集器

07-11-08 xysniper
    

你好,banq大哥,你说java的垃圾回收机制是在内存剩余大约5%时才启动,我想问一下,这里的内存是指机器的内存,还是指-Xms和-Xmx或-XX:PermSize限定的空间?

    

syyzxsyf
2007-11-11 23:32

你好,让我试着简要解释一下java gc吧,可能对你有所帮助。

Java内存从简单上讲,应该分为三个区域,Level 1缓存,Level 2缓存以及perm区域。Level 1缓存满了,则触发partial gc;Level 2缓存满了,则触发full gc;perm区域则是class定义的常驻区域。

-Xms和-Xmx限定的应该是Level 1 cache + Level 2 cache + perm size的大小。

Sun的java虚拟机有专门的参数,你可以看到虚拟机的垃圾收集信息,你可以看一下。

至于是5%,还是10%,个人感觉不太重要。理解了两层的垃圾收集机制才是问题的关键,性能调优时也基本上足够了。

GC在网上有很多英文文章进行讨论,你可以看看。