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.hqwc.cn/news/129193.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

缓存雪崩、缓存穿透和缓存击穿产生的原因及解决方案

目录 什么是缓存雪崩&#xff1f; 缓存雪崩的解决方案 什么是缓存穿透&#xff1f; 缓存穿透的解决方案 什么是缓存击穿&#xff1f; 缓存击穿的解决方案 缓存在提高系统性能和响应速度方面起着关键作用&#xff0c;但在实际应用中&#xff0c;我们常常面临一些与缓存相…

leetCode 718.最长重复子数组 动态规划 + 优化(滚动数组)

718. 最长重复子数组 - 力扣&#xff08;LeetCode&#xff09; 给两个整数数组 nums1 和 nums2 &#xff0c;返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 输出&#xff1a;3 解释&…

2023-2024年华为ICT网络赛道模拟题库

2023-2024年网络赛道模拟题库上线啦&#xff0c;全面覆盖网络&#xff0c;安全&#xff0c;vlan考点&#xff0c;都是带有解析 参赛对象及要求&#xff1a; 参赛对象&#xff1a;现有华为ICT学院及未来有意愿成为华为ICT学院的本科及高职院校在校学生。 参赛要求&#xff1a…

【Spring MVC研究】MVC如何浏览器请求(service方法)

文章目录 1. DispatcherServlet 的 service 方法1.1. processRequest 方法1.2. doService 方法 背景&#xff1a;平时我们学习 MVC 重点关注的时DispatcherServlet 的 doDispatcher 方法&#xff0c;但是在 doDispatcher 方法之前 还有请求处理的前置过程&#xff0c;这个过程…

electron.js入门-为生产环境构建应用程序

在本章中&#xff0c;我们将学习如何使用可执行文件生成生产应用程序&#xff1b;为此&#xff0c;我们将使用以下软件包&#xff1a; https://www.electron.build/ 需要注意的是&#xff0c;当您有兴趣生成应用程序的可执行文件时&#xff0c;必须在每个Electron.js项目中安装…

linux centos Python + Selenium+Chrome自动化测试环境搭建?

在 CentOS 系统上搭建 Python Selenium Chrome 自动化测试环境&#xff0c;需要执行以下步骤&#xff1a; 1、安装 Python CentOS 7 自带的 Python 版本较老&#xff0c;建议使用 EPEL 库或源码安装 Python 3。例如&#xff0c;使用 EPEL 库安装 Python 3&#xff1a; sud…

Java 线程的生命周期

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

国内就能使用的chatgpt网页版,包含AIGC应用工具

Chatgpt的出现在多个领域带来了重要的影响。它能够显著提高我们的工作效率&#xff0c;无论是编写文案代码还是回答常见问题&#xff0c;都能在短时间内完成任务。通过Chatgpt&#xff0c;我们能够迅速获取所需答案。随着人工智能技术的不断发展&#xff0c;相信在未来AI能够带…

知识图谱1_2——下载neo4j客户端

客户端下载 这里展现一种通过客户端进行操作的方法 https://neo4j.com/download/ 下载desktop客户端 填写完成后开始下载 下载完成后&#xff0c;在命令行输入 chmod x <文件名> #给予文件权限 sudo add-apt-repository universe #安装.appimage所需的包fuse&#x…

3分钟基于Chat GPT完成工作中的小程序

1. 写在前面 GPT自从去年爆发以来&#xff0c;各大公司在大模型方面持续发力&#xff0c;行业大模型也如雨后春笋一般发展迅速&#xff0c;日常工作中比较多的应用场景还是问答模式&#xff0c;作为写程序的辅助也偶尔使用。今天看到一篇翻译的博客“我用 ChatGPT&#xff0c;…

基于正点原子alpha开发板的第三篇系统移植

系统移植的三大步骤如下&#xff1a; 系统uboot移植系统linux移植系统rootfs制作 一言难尽&#xff0c;踩了不少坑&#xff0c;当时只是想学习驱动开发&#xff0c;发现必须要将第三篇系统移植弄好才可以学习后面驱动&#xff0c;现将移植好的文件分享出来&#xff1a; 仓库&…

ViewPager、RecycleView实现轮播图

1.ViewPager实现轮播图形效果。 1&#xff09;layout中&#xff0c;PageIndicatorView轮播的View <RelativeLayoutandroid:layout_width"match_parent"android:layout_height"200dp"android:orientation"vertical"><androidx.viewpager…