暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

怎么查看JVM的参数?

码上记录 2021-09-15
2068

进行JVM调优的第一步是查询JVM使用的参数。怎么查询JVM的参数呢?

我们可以分为程序没有启动和程序已经启动两种情况来看。


程序没有启动的情况


首先我们先写一个最简单的Hello World程序,程序代码如下。

    public class ShowJVMOptions {


        public static void main(String[] args) {
        
            System.out.println("hello world");

    }
    }


    然后使用 

      Java ShowJVMOptions.java 

      进行编译,得到ShowJVMOptions.class 文件。


      下面就可以指定打印JVM参数来进行启动了。


      打印显式参数 -XX:+PrintVMOptions

        java -XX:+PrintVMOptions ShowJVMOptions

        执行输出

          VM option '+PrintVMOptions'
          hello world


          打印显式隐式参数 -XX:+PrintCommandLineFlags

            java -XX:+PrintCommandLineFlags ShowJVMOptions

            执行输出


              -XX:InitialHeapSize=525316096 -XX:MaxHeapSize=8405057536 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
              hello world


              打印所有系统参数 -XX:+PrintFlagsFinal

                java -XX:+PrintFlagsFinal ShowJVMOptions > jvm_flag_final.txt


                这样做会把所有的JVM参数都输出到jvm_flag_final.txt文件中去,总共有

                728/2=364条。



                程序已经启动的情况


                如果程序已经启动,那就不能再加打印参数了,这时应该怎么做呢?


                首先可以使用jps命令来打印出目前运行的JVM虚拟机进程。在机器上运行jps,输出如下:


                可以看到有一个Kafka的java进程,pid是250254,下面就来分析这个进程。


                想要看到这个进程的JVM参数,可以使用jinfo命令。这个命令专门用来输出JVM参数信息。不仅可以输出本机的,还可以输出远程机器和core文件的JVM信息。


                先看一下jinfo的用法:



                使用 jinfo -flags pid 来看一下看Kafka进程的JVM参数。



                图中红框的部分是Kafka GC文件所在的位置。如果出现了GC问题,首先要找到GC文件,然后根据文件输出进行分析。

                文章转载自码上记录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论