美文网首页
JVM 参数分析

JVM 参数分析

作者: 星冉子 | 来源:发表于2019-09-29 20:26 被阅读0次

    JVM参数分类

    JVM参数分为标准参数和非标准参数

    标准参数:"-"开头的参数,如-client等;

    非标准参数:"-X"和"-XX"开头的参数,如-Xmx等;


    或者简单分为三类:"-"开头的参数、"-X"开头的参数、"-XX"开头的参数

    "-X"开头的参数是非标准参数,只能被部分VM识别,而不能被全部VM识别的参数;

    "-XX"开头的参数是非稳定参数,随时可能被修改或者移除;


    -XX参数的常见语法有:

    -XX:+[PARAM], 开启该参数的功能,如-XX:+DisableExplicitGC,开启禁止显式GC

    -XX:-[PARAM], 关闭该参数的功能,如-XX:-DisableExplicitGC,关闭禁止显示GC

    -XX:PARAM=VALUE, 设置参数的值,如-XX:SurvivorRatio=80,设置eden/survivor的比值

    常用标准参数

    -agentlib:[=<选项>]:加载本地代理库,如-agentlib:hprof将加载hprof.dll或者hprof.so文件;

    -agentpath:[=<选项>]:按完整路径名加载本机代理库;

    -javaagent:[=<选项>]:加载 Java 编程语言代理,同agentlib和agentpath,只是前者是C/C++代理,而javaagent使用java语言编写的jar;

    -classpath classpath:同-cp classpath,指定查找class的路径,多个路径window环境以分号分割,Linux以冒号分割;

    -Dxx=value:设置系统参数,在代码中可以通过System.getProperty(xx)获取,如java -Denv=test Main.class;

    -verbose:[class|gc|jni]  <pid>:打印虚拟机运行信息,可以在程序启动时,做为参数传入,也可做为命令行使用;

    常用内存参数

    -Xmx[value] :设置堆内存最大值,如-Xmx1g或者-Xmx1024m;默认为物理内存的“1/4”;

    -Xms[value] :设置堆内存最小值,一般和Xmx设置成一样;默认为物理内存的“1/64”;

    -Xmn[value] :设置新生代大小;

    -Xss[value]:设置栈空间大小;

    -XX:SurvivorRatio=[value]:设置新生代Eden和Survivor划分比例;

    -XX:PermSize=[value] :设置永久带初始大小,JDK8中已移除;

    -XX:MaxPermSize=[value] :设置永久代最大值。JDK8中已移除;

    -XX:MetaspaceSize=[value] :设置meta区大小。JDK8增加;

    -XX:NewRatio=2:新生代内存容量与老生代内存容量的比例;

    常用调试参数

    -XX:+PrintFlagsInitial:显示JVM所有可设置的参数及它们的初始值;

    -XX:+PrintFlagsFinal:显示JVM所有可设置的参数及它们修改后的值,=表示未修改,:=表示修改;

    -XX:ErrorFile=[path] :生成error 文件的路径,当JVM发生致命错误导致崩溃时,会生成包含了导致 JVM crash 的重要信息的文件用于定位;

    -XX:+HeapDumpOnOutOfMemoryError :OOM的时候dump出内存;

    -XX:HeapDumpPath:dump文件位置;

    -XX:+PrintGC :打印GC详情;

    -XX:+PrintGCDetails :打印GC更详细的信息;

    -Xloggc:[path] :设置gc日志位置;

    -XX:+PrintHeapAtGC 每次一次GC前后,都打印堆信息;

    查看运行时参数

    通过jps 命令查看 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息;

    jps:查看所有Java进程,显示进程id和启动类名称;

    jps –l:显示进程id和启动类的全路径;

    jps –m:显示进程id和传递给 Java 进程(main 方法)的参数;

    jps –v:显示进程id和传递给 Java 虚拟机的参数;

    通过jinfo命令查看JVM配置信息,包括命令行参数、系统变量,也可以用其来修改命令行参数;

    Jinfo <pid>:查看进程所有虚拟机参数和系统参数;

    Jinfo –flag <name> <pid>:查看进程指定参数,name指参数名称;

    Jinfo -flag +<name><pid>:开启指定参数; (可使用jinfo动态设置GC参数无需重启

    Jinfo -flag -<name><pid>:关闭指定参数;

    Jinfo -flag <name>=<value> <pid>:设置虚拟机参数(并不是每个参数都可以被动态修改的,不支持会抛异常);

    相关文章

      网友评论

          本文标题:JVM 参数分析

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