sun的JDK版本从1.3.1开始运用HotSpot虚拟机, 2006年底开源,主要使用C++ 实现, JNI接口部分使用C实现。
HotSpot是较新的java虚拟机,用来替代JIT(just in time), 大大提高java的运行性能。
Java原先是把源代码编译为字节码在虚拟机执行,这样执行速度较慢。而HotSpot将常用的部分代码编译为本地(原生,native)代码,这样显着提高了性能。
下面主要介绍一下虚拟机的调试参数:
HotSpot 的JVM参数可以分为标准参数和非标准参数,标准参数相对稳定,在JDK未来的版本不会有太大的改动;非标准参数可能因JDK版本升级而改变。
下面是HotSpot虚拟机使用的不同分代的垃圾收集器。连线代表两个收集器可以配合使用。
来看一下对垃圾收集器的总结,列了一张表
GC组合 | Minor GC | Full GC | 描述 |
-XX:+UseSerialGC | Serial收集器串行回收 | Serial Old收集器串行回收 | 该选项可以手动指定Serial收集器+Serial Old收集器组合执行内存回收 |
-XX:+UseParNewGC | ParNew收集器并行回收 | Serial Old收集器串行回收 | 该选项可以手动指定ParNew收集器+Serilal Old组合执行内存回收 |
-XX:+UseParallelGC | Parallel收集器并行回收 | Serial Old收集器串行回收 | 该选项可以手动指定Parallel收集器+Serial Old收集器组合执行内存回收 |
-XX:+UseParallelOldGC | Parallel收集器并行回收 | Parallel Old收集器并行回收 | 该选项可以手动指定Parallel收集器+Parallel Old收集器组合执行内存回收 |
-XX:+UseConcMarkSweepGC | ParNew收集器并行回收 | 缺省使用CMS收集器并发回收,备用采用Serial Old收集器串行回收 | 该选项可以手动指定ParNew收集器+CMS收集器+Serial Old收集器组合执行内存回收。优先使用ParNew收集器+CMS收集器的组合,当出现ConcurrentMode Fail或者Promotion Failed时,则采用ParNew收集器+Serial Old收集器的组合 |
-XX:+UseConcMarkSweepGC-XX:-UseParNewGC | Serial收集器串行回收 | ||
-XX:+UseG1GC | G1收集器并发、并行执行内存回收 | 暂无 |
相关文章:Java虚拟机 5:Java垃圾回收(GC)机制详解:http://www.oracle.com/technetwork/cn/articles/java/g1gc-1984535-zhs.html
垃圾优先型垃圾回收器调优:http://www.importnew.com/28413.html