阅读了java paper的垃圾回收器类型文章,在此做一个小结,文章部分翻译自java paper gc collector,部分自己做的总结,图片来自网络,在此仅用作理解表达之用。
JVM的垃圾回收器大致分为四种类型:
(图片来自网络)
Ps:在jdk client模式,不指定VM参数,默认是串行垃圾回收器
(图片来自网络)
(图片来自网络)
(图片来自网络)
(图片来自网络)
Option | Description |
---|---|
-XX:+UseSerialGC | Serial Garbage Collector 串行垃圾回收器 |
-XX:+UseParallelGC | Parallel Garbage Collector并行垃圾回收器 |
-XX:+UseConcMarkSweepGC | CMS Garbage Collector并发标记垃圾回收器 |
-XX:ParallelCMSThreads= | CMS Collector – number of threads to use 并发标记垃圾回收器使用的线程数,通常是cpu个数 |
-XX:+UseG1GC | G1 Gargbage Collector 使用G1垃圾回收器 |
Option | Description |
---|---|
-Xms | Initial heap memory size 初始化heap大小 -Xms512M |
-Xmx | Maximum heap memory size 设置最大的heap大小 |
-Xmn | Size of Young Generation 年轻代的大小 |
-XX:PermSize | Initial Permanent Generation size 初始化永久带的大小 |
-XX:MaxPermSize | Maximum Permanent Generation size 最大的永久带大小 |
Parallel GC 并行垃圾回收策略举例:
java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20
-XX:+UseParallelOldGC
MaxGCPauseMillis=100
-XX:MaxGCPauseMillis=100
CMS GC 并发标记清楚垃圾回收策略举例:
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k-XX:ParallelGCThreads=20
-XX:+UseConcMarkSweepGC-XX:+UseParNewGC
-XX:CMSFullGCsBeforeCompacti
-XX:+UseCMSCompactAtFullColle
Eg:
java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m -XX:+UseSerialGC -jar java-application.jar
更多详细配置,请参考:http://blog.sina.com.cn/s/blog_4080505a0101i6cr.html
我们知道jvm分client 和 server模式。
如果启动jvm不指定模式,jdk会根据当前的操作系统配置来启动不同模式的jvm。
默认64bit操作系统下都会是server模式的jvm。
java -XX: +PrintCommandLineFlags -version
-XX:MaxHeapSize=1073741824 -XX:ParallelGCThreads=85 -XX: +PrintCommandLineFlags -XX: +UseParallelGC java version "1.6.0_14" Java(TM) SE Runtime Environment (build 1.6.0_14-b07) Java HotSpot(TM) Server VM (build 14.0-b15, mixed mode)
For J2SE 5.0, the definition of a server-class machine is one with at least 2 CPUs and at least 2GB of physical memory.
对于jdk5,区分是否是server还是client jvm模式,至少2个CPU和2GB的物理内存。
Platform
|
Default VM
|
|||
Architecture | OS |
client VM
|
if server-class, server VM;
otherwise, client VM |
server VM
|
SPARC 32-bit | Solaris |
|
X
|
|
i586 | Solaris |
|
X
|
|
Linux |
|
X
|
|
|
Microsoft Windows |
X
|
|
|
|
SPARC 64-bit | Solaris |
—
|
|
X
|
AMD64 | Linux |
—
|
|
X
|
Microsoft Windows |
—
|
|
X
|
垃圾回收器目前分为四种类型, 串行,并行,并发标记,G1。
小数据量和小型应用,使用串行垃圾回收器即可。
对于对响应时间无特殊要求的,可以使用并行垃圾回收器和并发标记垃圾回收器。(中大型应用)
对于heap可以分配很大的中大型应用,使用G1垃圾回收器比较好,进一步优化和减少了GC暂停时间。
没有银弹,针对不同的场景,选用不同的垃圾回收器。
参考文献:
http://javapapers.com/java/types-of-java-garbage-collectors/
http://blog.sina.com.cn/s/blog_4080505a0101i6cr.html
http://docs.oracle.com/javase/1.5.0/docs/guide/vm/server-class.html
原创文章,转载请注明出自:http://blog.csdn.net/oopsoom/article/details/40374897
原文地址:http://blog.csdn.net/oopsoom/article/details/40374897