jvm参数入门与概述

JVM java 17

java 11

JAVA8

标准参数

jvm的标准参数,一般都是很稳定的,在未来的JVM版本中不会改变

可以使用java -help 检索出所有的标准参数。

java ‐help
-version
public class VmTest {
    public static void main(String[] args) {
        SpringApplication.run(VmTest.class,args);
    }
}

public class TestJVM {
  public static void main(String[] args) {
    String str = System.getProperty("str");
    if (str == null) {
      System.out.println("555");
    } else {
      System.out.println(str);
    }
  }
}
#编译
[root@node01 test]# javac TestJVM.java
#测试
[root@node01 test]# java TestJVM
itcast
[root@node01 test]# java ‐Dstr=123 TestJVM
123

 通过-server或-client设置jvm的运行参数

JVM在启动的时候会根据硬件和操作系统自动选择使用 Serveri还是Client类型的JVM

32位操作系统

如果是Windows系统,不论硬件配置如何,都默认使用Client类型的JVM

如果是其他操作系统上,机器配置有2GB以上的内存同,时有2个以上CPU的话默认使用server模式,否则使用client模式

64位操作系统:只有server类型,不支持client类型

-X参数 (非标准参数 不保证每个JVM都支持)

附加选项(Extra Options for Java) java 11 中命名

HotSpot虚拟机的通用选项,其他厂牌的JVM不一定会支持这些选项,并且在未来可能会发生变化。这些选项以-X开头。

  1. -Xint :解释模式(interpreted mode)下,会强制JVM执行所有的字节码,当然这会降低运行速度,通常低10倍或更多
  2. -Xcomp:与(-Xint)正好相反,JVM在第一次使用时会把所有的字节码编译成本地代码,从而带来最大程度的优化
  3. -Xmixed:混合模式,将解释模式与编译模式进行混合使用,由jvm自己决定,这是jvm默认的模式,也是推荐使用的模式

 -XX参数(开发用)

boolean类型:

格式:-XX:[+-]

如:-XX:+DisableExplicitGC 表示禁用手动调用gc操作,也就是说调用system.gc()无效

-XX:+PrintFlagsFinal

非boolean类型

格式:-xx

如:-XX:NewRatio=1表示新生代和老年代的比值。

  1. = 默认值
  2. := 被修改的值

打印相关的

XX:+PrintCommandLineFlags 程序运行时JVM默认设置或用户手动设置的XX选项

-XX:+PrintFlagsInitial 打印所有XX选项的默认值

-XX:+PrintFlagsFinal 打印所有XX选项的实际值-XX:+PrintVMOptions 打印JVM的参数

堆、栈、方法区和内存等

-Xss128k<==>-XX:Threadstacksize=128k 设置线程栈的大小为128K

-Xms2048m<==>-XX:InitialHeapsize=2048m 设置JVM初始堆内存为2048M

-Xmx2048m<==>-XX:MaxHeapsize=2048m 设置JVM最大堆内存为2048M

-Xmn2g<==>-XX:Newsize=2g-xx:MaxNewsize=2g 设置年轻代大小为2G

-xx:SurvivorRatio=8 设置Eden区与survivor区的比值,默认为8

-xx:NewRatio=2 设置老年代与年轻代的比例,默认为2

-xx:+UseAdaptivesizePolicy 设置大小比例自适应,默认开启

-Xx:Pretenuresizerhreadshold=1024 设置让大于此阈值的对象直接分配在老年代,只对seria1、parNew收集器有效

-xx:MaxrenuringThreshold=15 设置新生代晋升老年代的年龄限制,默认为15

-XX:TargetsurvivorRatio 设置MinorGc结束后Survivor区占用空间的期望比例

方法区

-XX:Metaspacesize /-XX:Permsize=256m 设置元空间/永久代初始值为256M

-XX:MaxMetaspacesize/-Xx:MaxPermsize=256m 设置元空间/永久代最大值为256M

-XX:+UseCompressedoops 使用压缩对象

-XX:+UseCompressedClassPointers使用压缩类指针

-XX:CompressedClassSpacesize 设置Klass Metaspace的大小,默认1G#

直接内存-XX:MaxDirectMemorySize 指定DirectMemory容量,默认等于Java堆最大值

OutOfMemory 相关的选项

-XX:+HeapDumpOnOutMemoryError 内存出现OOM时生成Heap转储文件,两者互斥-XX:+HeapDumpBeforeFullGC 出现FullGC时生成Heap转储文件,两者互斥

-XX:HeapDumpPath=<path>指定heap转储文件的存储路径,默认当前目录-XX:OnOutOfMemoryError=<path>指定可行性程序或脚本的路径,当发生OOM时护行脚本

GC 日志相关选项

-XX:+PrintGC <==>-verbose:gc打印简要日志信息

-XX:+PrintGCDetails打印详细日志信息

-XX:+PrintGcrimeStamps 打印程序启动到GC发生的时间,搭配-xx:+Printccpetai1s使用-XX:+PrintGcDatestamps 打印GC发生时的时间戳,搭配-xx:+PrintGcpetails使用-xx:+PrintHeapatGc 打印GC前后的信息

-xloggc:<file>输出GC导指定路径下的文件中

-XX:+TraceClassLoading监控类的加载

-XX:+PrintGcApplicationstoppedrime 打印GC时线程的停顿时间-X%:+PrintGCapplicationconcurrentrime 打印垃圾收集之前应用未中断的执行时间-xx:+PrintReferenceGc 打印回收了多少种不同引用类型的引用-XX:+PrintTenuringDistribution 打印JVM在每次MinorGc后当前使用的survivor中对象的年-XX:+UseGCLogFileRotation 启用GC日志文件的自动转储

-XX:NumberOfGCLogFiles=1设置GC日志文件的循环数目

-XX:GCLogFilesize=lM设置GC日志文件的大小

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值