关注“Java后端技术栈”
回复“面试”获取最新资料
本次主要内容:
如何查看参数标准参数-X参数-XX参数Boolean类型非Boolean类型其他参数如何设置参数单位换算JVM常见参数和含义
如何查看参数
java -XX:+PrintFlagsFinal -version > flags.txt
在IDEA中
想要的JVM参数在这里都能找到。
标准参数
- -version :输出java的版本信息,比如jdk版本、vendor、model。
- -help :输出java标准参数列表及其描述。
- -server:设置jvm使server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境。在具有64位能力的jdk环境下将默认启用该模式,而忽略-client参数。
例如:执行java -version
-X参数
-X***的属于非标准参数,意思就是在不同JDK
版本汇总可能会变动。
- -Xint 解释执行
- -Xcomp 第一次使用就编译成本地代码
- -Xmixed 混合模式,JVM自己来决定
-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
查询+PrintFlagsFinal的值:=true
查询堆内存大小MaxHeapSize:= 104857600
值得注意的是"="表示默认值,":="表示被用户或JVM修改后的值
换算104857600(Byte)/1024=102400(KB)102400(KB)/1024=100(MB)所以104857600是字节单位
JVM常见参数和含义
往期精彩:
面试被问:运行一个HelloWorld程序JVM都经历了什么
Java面试知识点解析——JVM篇
300 行代码带你秒懂 Java 多线程!
Java坑人面试题系列: 线程/线程池(高级难度)
面试官问:MySQL的自增ID用完了,怎么办?
在这金三银四的季节,栈长为大家准备了几份面试宝典:
- 《java面试宝典5.0》
- 《Java(BAT)面试必备》
- 《350道Java面试题:整理自100+公司》
- 《资深java面试宝典-视频版》
- 大量电子书籍
获取方式: V信扫描上面二维码领取。