JVM两种运行模式的区别
- 编译器方面:
- client模式:使用c1编译器,c1编译器更加轻量级;
- server模式:使用c2编译器;
- c2编译器编译相较于c1编译器更加彻底。
- GC方面:
- client模式:一般选择串行GC垃圾收集器(JDK 8默认为:Serial+Serial Old);
- server模式:一般选择并行的GC垃圾收集器(JDK 8默认为:Parallel Scavenge+Serial Old)
- 可以使用命令java -XX:PrintCommandLineFlags -version,查询你所使用GC垃圾收集器。
- 启动运行方面:
- client模式:启动快、编译快、内存占用少,针对桌面应用程序所设计,优化桌面应用程序的启动时间;
- server模式:启动慢、编译更完全、编译器是自适应编译器,效率高,针对服务端应用程序设计,最大化程序执行速度;
- 吞吐量优先使用Parallel Scavenge(默认GC垃圾收集器),时间优先使用CMS。