美文网首页
java和jvm分别查看使用的垃圾收集器

java和jvm分别查看使用的垃圾收集器

作者: 7d972d5e05e8 | 来源:发表于2019-11-04 20:10 被阅读0次

    一、java查看垃圾收集器

    使用命令:java -XX:+PrintCommandLineFlags -version。如下:


    image.png

    可以看到这台机器上,安装的java版本,默认的垃圾收集器是-XX:+UseParallelGC。

    二、jvm查看垃圾收集器

    使用命令:jmap -heap pid。pid通过jps可以查看,如下:


    image.png

    老年代使用的是CMS收集器。和上面通过java命令查看得到的UseParallelGC(Parallel Scavenge+Parallel Old)不一样。

    这是为啥?
    因为java命令查看的是本机安装的java版本自带的默认垃圾收集器。而JVM是启动起来的具体进程,可以指定具体使用哪种收集器。比如:同一台机器上安装java1.8版本,默认是UseParallelGC,但是我可以在本机起来两个JVM,分别指定不同的垃圾收集器。所以这就是一直困惑我的问题:通过java命令查看的垃圾收集器和机器上gc日志打印出来的垃圾收集器,不一样。原来是我把java垃圾收集器当成了jvm垃圾收集器,它们两还是不一样的。一个是静态的,一个是动态的。JVM启动的时候,可以设置启动参数,修改垃圾收集器。如下:

    JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:CMSMaxAbortablePrecleanTime=5000 -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly"
    

    总结:网上搜索到的,很多都是查看java的垃圾收集器。这里要区分JVM和java的不同。


    image.png

    相关文章

      网友评论

          本文标题:java和jvm分别查看使用的垃圾收集器

          本文链接:https://www.haomeiwen.com/subject/pmxjbctx.html