当前位置: 首页 > news >正文

JVM 参数

JVM 参数类型大致分为以下几类:

  • 标准参数(-):保证在所有的 JVM 实现都支持的参数
  • 非标准参数(-X):通用的,特定于 HotSpot 虚拟机的参数,这些参数不保证在所有 JVM 实现中被支持,且可能会更改
  • 高级运行时参数(-XX):此类参数不建议随意使用,这些参数用于调整 HotSpot VM 的特定区域,不保证所有的 JVM 实现都支持,并且可能会发生改变

参数分为布尔类型和值类型,布尔类型被用于启用默认禁用的特性,或者禁用默认启动的特性,这类参数不用指定值,使用 + 号来启动参数如 -XX:+OptionName,使用 - 号来禁用布尔如 -XX:-OptionName

值类型的参数可以使用 :或者 = 来分隔参数名和参数值,或者值直接跟在参数后面,如果参数值要指定字节大小,你可以不使用后缀,或者使用 k/K 来表示 KB,使用 m/M 来表示 MB,使用 g/G 来表示 GB,如果参数值要指定百分比,你需要使用 0-1 的数字,比如 0.25 表示 25%。

标准参数

标准参数,可以理解为 java 命令的可选项,可以使用 java 命令查看标准参数:
在这里插入图片描述
标准参数的含义:

参数含义
-classpath/-cp类搜索路径,可以使用目录或者 zip/jar 文件的路径,多个用 ;分隔
-D<name>=<value>设置系统属性
-client设置 jvm 使用 client 模式,特点是启动速度比较块,但运行时性能和内存管理效率不高,通常用于客户端应用程序或 PC 应用开发和调试
-server设置 jvm 使用 server 模式,默认就是 server 模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境
-verbose:[class|gc|jni]启动详细输出
-X输出非标准参数的帮助文档

非标准参数

非标准参数是特定于 HotSpot VM 的通用参数,可以使用 java -X 命令查看,不同 JDK 版本可能会有不同。

在这里插入图片描述
非标准参数的含义:

参数名含义
-Xint以仅解释模式运行应用程序。对本地代码的编译被禁用,所有字节码都由解释器执行。JIT 编译器提供的性能优势在这种模式下并不存在
-Xmixed由解释器执行所有字节码,hot method 除外,后者被由 JIT 编译成本地代码
-Xincgc开启增量 gc(默认为关闭),这有助于减少长时间 GC 时应用程序出现的停顿,但由于可能和应用程序并发执行,所以会减低 CPU 对应用的处理能力
-Xloggc:file-verbose:gc 功能类似,只是将每次 GC 事件的相关情况记录到一个文件中,文件的位置最好在本地,以避免网络的潜在问题。
-Xms设置堆的初始容量和最小容量,它必须时 1024 的倍数且不能小于 1M,需要注意的是 -XX:InitalHeapSize 也可以指定堆初始容量,如果这两个都出现在命令行中,则以最后一个参数为准
-Xmx指定堆的最大容量,它必须时 1024 的倍数且不能小于 2M,它等价于 -XX:MaxHeapSize 参数
-Xss设置线程堆栈的容量,默认值依赖于操作系统,它类似于 -XX:ThreadStackSize
-Xmn新生代的初始容量和最大容量,此处的大小指的是 eden+2*surivor sapce,你也可以使用 -XX:NewSize 设置初始容量,使用 -XX:MaxNewSize 设置最大容量,如果都出现在命令行中则以最后一个参数为准

高级运行时参数

这些参数控制 HotSpot VM 的运行时行为。

参数名含义
-XX:MaxDirectMemorySize=size设置 NIO 中直接内存的最大空间,可以使用单位如 k、m、g,默认情况下为 0,这表示 JVM 自动选择 NIO 直接内存的大小
-XX:+PrintCommandLineFlags打印在命令行中指定的参数
-XX:ThreadStackSize=size设置 Java 线程堆栈大小
-XX:+HeapDumpOnOutOfMemoryError当出现 OOM 时,在当前目录生成堆转储文件,默认关闭
-XX:HeapDumpPath=path当 -XX:+HeapDumpOnOutOfMemoryError 启用后,生成堆转储文件的路径,默认情况下在当前目录下生成,文件名为 java_pid${pid}.hprof,你可以自定义文件名:-XX:HeapDumpPath=/var/log/java/java_heapdump.hprof
-XX:LogFile=path设置 HotSpot 的日志文件路径,默认生成在当前工作目录,名为 hotspot.log
-XX:InitialHeapSize=size设置堆的初始容量
-XX:MaxHeapSize=size设置堆的最大容量
-XX:MaxNewSize=size设置新生代的最大容量
-XX:+PrintGC打印 GC 事件,默认禁用
-XX:+PrintGCDetails打印 GC 事件的详细信息,默认禁用
-XX:SurvivorRatio=ratio设置 eden/survivor 的比值,默认值为 8
-XX:+UseConcMarkSweepGC使用 GMS 垃圾收集器收集老年代
-XX:+UseG1GC使用 G1 垃圾收集器
-XX:+UseParallelGC使用 parallel scavenge 垃圾收集器
-XX:+UseParallelOldGCfull gc 使用 parallel 垃圾收集器,默认禁用,当启用 -XX:+UseParallelGC 时自动启用
-XX:+UseParNewGC在新生代中使用 parallel thread 垃圾收集器,默认禁用,当启用 -XX:+UseConcMarkSweepGC 时自动启用
-XX:+UseSerialGC使用 serial 垃圾收集器

参考:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BABDJJFI

https://juejin.cn/post/7033554940677062670

http://www.lryc.cn/news/187799.html

相关文章:

  • 黑马点评-07缓存击穿问题(热点key失效)及解决方案,互斥锁和设置逻辑过期时间
  • 信息系统项目管理师第四版学习笔记——项目进度管理
  • 指挥棒:C++ 与运算符
  • HTTPS建立连接的过程
  • Python接口自动化搭建过程,含request请求封装!
  • Vue3 编译原理
  • spring boot整合Minio
  • Hadoop----Azkaban的使用与一些报错问题的解决
  • 「新房家装经验」客厅电视高度标准尺寸及客厅电视机买多大尺寸合适?
  • ArduPilot开源飞控之AP_Baro_DroneCAN
  • Supervised Contrastive Pre-training for Mammographic Triage Screening Model
  • JVM技术文档--JVM优化思路以及问题定位--JVM可调整参数汇总
  • Oracle10g数据库迁移方案
  • 备忘录模式:对象状态的保存与恢复
  • C# InvokeRequired线程安全
  • pdf怎么转成jpg图片格式
  • React +ts + babel+webpack
  • 红队专题-REVERSE二进制逆向反编译
  • Spring技术原理之Bean生命周期原理解析
  • Unity实现设计模式——模板方法模式
  • C++实现高性能内存池(二)
  • 沪深300期权一个点多少钱?
  • 怎么防止重要文件夹丢失?文件夹安全如何保护?
  • 用于物体识别和跟踪的下游任务自监督学习-1-引言
  • 式子表达ds类——多用位置/值域表示未知数+区间覆盖转区间加:CF407E
  • Python 实现秒表功能(比较好玩的题目)
  • DALL-E 3调参教程;百度新出的AI写小说神器;通义听悟看播客也太爽了;系列博文带你理解生成式AI | ShowMeAI日报
  • 设计模式-享元模式
  • 中秋时节赏明月,五子棋戏月饼趣 — Flutter中秋限定版五子棋
  • Scala第十九章节