题目7:怎么查看服务器默认的垃圾收集器是哪个?生产上如何配置垃圾收集器的?谈谈你对垃圾收集器的理解。
怎么查看服务器默认的垃圾收集器?
JVM参数: java -XX:+PrintCommandLineFlags -version
服务器默认的垃圾收集器是哪个?
UseSerialGC,UseParallelGC,UseConcMarkSweepGC,UseParNewGC,UseParallelOldGC,UseG1GC.
UseSerialOldGC(弃用)
垃圾收集器(重点)
参数说明
DefNew : Default New Generation
Tenured : Old
ParNew : Parallel New Generation
PSYoungGen : Parallel Scavenge
ParOldGen : Parallel Old Generation
Server/Client 模式分别是什么意思
最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升。
当虚拟机运行在-client模式的时候,使用的是一个代号为C1的轻量级编译器, 而-server模式启动的虚拟机采用相对重量级,代号为C2的编译器,C2比C1编译器编译的相对彻底,服务起来之后,性能更高。
所以通常用于做服务器的时候我们用服务端模式,如果你的电脑只是运行一下java程序,就客户端模式就可以了。当然这些都是我们做程序优化程序才需要这些东西的,普通人并不关注这些专业的东西了。其实服务器模式即使编译更彻底,然后垃圾回收优化更好,这当然吃的内存要多点相对于客户端模式。
新生代
·串行 GC (Serial/ Serital Copying)
·并行 GC (ParNew)
·并行回收 GC (Parallel/ Parallel Scanvenge)
老年代
串行 GC (Serial Old/ Serial MSC)
并行 GC (Parallel Old/ Parallel MSC)
并发标记清除 GC (CMS)
垃圾收集器配置代码总结
生产上如何配置垃圾收集器的
~~单 CPU 或者小内存,单机程序:-XX:UseSerialGC
~~多 CPU 需要最大吞吐量,如后台计算型应用:-XX:UseParallelGC 或者 -XX:UseParallelOldGC
~~多 CPU 追求低停顿时间,需要快速响应,如互联网应用:-XX:+UseConcMarkSweepGC -XX:UsePerNewGC