关注“Java后端技术栈

回复“面试”获取最新资料

本次主要内容:

如何查看参数标准参数-X参数-XX参数Boolean类型非Boolean类型其他参数如何设置参数单位换算JVM常见参数和含义

如何查看参数

java -XX:+PrintFlagsFinal -version > flags.txt

JVM系列——JVM参数及如何设置_Java

JVM系列——JVM参数及如何设置_JVM_02

在IDEA中

JVM系列——JVM参数及如何设置_java_03

JVM系列——JVM参数及如何设置_Java_04

JVM系列——JVM参数及如何设置_JVM_05

想要的JVM参数在这里都能找到。

标准参数

  • -version :输出java的版本信息,比如jdk版本、vendor、model。
  • -help :输出java标准参数列表及其描述。
  • -server:设置jvm使server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境。在具有64位能力的jdk环境下将默认启用该模式,而忽略-client参数。

例如:执行java -version

JVM系列——JVM参数及如何设置_JVM_06

-X参数

-X***的属于非标准参数,意思就是在不同JDK版本汇总可能会变动。

  • -Xint   解释执行
  • -Xcomp  第一次使用就编译成本地代码
  • -Xmixed  混合模式,JVM自己来决定

JVM系列——JVM参数及如何设置_Java_07

-XX参数

非标准化参数,相对不稳定,主要用于JVM调优和Debug,使用频率最高的参数。

Boolean类型

格式:-XX:[+-]name      +或-表示启用或者禁用name属性比如:

-XX:+UseConcMarkSweepGC  表示启用CMS类型的垃圾回收器-XX:+UseG1GC      表示启用G1类型的垃圾回收器

非Boolean类型

格式:-XX:name=value表示name属性的值是value比如:-XX:MaxGCPauseMillis=500

其他参数

下面举例几个:

  • -Xms1000m等价于-XX:InitialHeapSize=1000m
  • -Xmx1000m等价于-XX:MaxHeapSize=1000m
  • -Xss100k等价于-XX:ThreadStackSize=100k

如何设置参数

  • 开发工具中设置比如IDEA(前面已经演示过了),eclipse也和IDEA类似
  • 运行jar包的时候:java -XX:+UseG1GC xxx.jar
  • web容器比如tomcat,可以在脚本中的进行设置
  • 通过jinfo实时调整某个java进程的参数(参数只有被标记为manageable的flags可以被实时修改)

单位换算

1Byte(字节)=8bit(位)
1KB=1024Byte(字节)
1MB=1024KB
1GB=1024MB
1TB=1024GB

示例:

设置堆内存大小和参数打印-Xmx100M -Xms100M -XX:+PrintFlagsFinal

JVM系列——JVM参数及如何设置_JVM_08

查询+PrintFlagsFinal的值:=true

JVM系列——JVM参数及如何设置_JVM_09

查询堆内存大小MaxHeapSize:= 104857600

值得注意的是"="表示默认值,":="表示被用户或JVM修改后的值

JVM系列——JVM参数及如何设置_java_10

换算104857600(Byte)/1024=102400(KB)102400(KB)/1024=100(MB)所以104857600是字节单位

JVM常见参数和含义

JVM系列——JVM参数及如何设置_Java_11

JVM系列——JVM参数及如何设置_Java_12

往期精彩:

面试被问:运行一个HelloWorld程序JVM都经历了什么

Java面试知识点解析——JVM篇

300 行代码带你秒懂 Java 多线程!

Java坑人面试题系列: 线程/线程池(高级难度)

面试官问:MySQL的自增ID用完了,怎么办?

JVM系列——JVM参数及如何设置_JVM_13

在这金三银四的季节,栈长为大家准备了几份面试宝典:

  • 《java面试宝典5.0》
  • 《Java(BAT)面试必备》
  • 《350道Java面试题:整理自100+公司》
  • 《资深java面试宝典-视频版》
  • 大量电子书籍

JVM系列——JVM参数及如何设置_java_14

获取方式: V信扫描上面二维码领取。