jvm之启动参数

news2024/10/7 8:28:48

写在前面

本文一起看下jvm启动参数相关内容,通过本文希望我自己也希望大家能够真正的应用到实际的工作中。

1:基本内容介绍

一般我们启动java程序有两种方式,一种是直接运行一个有main函数的class,第二种是运行一个在MANIFEST文件中指定了main类的jar包,格式分别如下:

class文件格式:
    java [options] classname [args]
jar包格式:
    java [options] jarfilename [args]

其中[options]就是我们本文要分析的jvm的参数配置,[args]是main函数的参数即main(String[] arags)中的args

参数具体可以分为标准参数,非标准参数,系统属性参数等,分别来看下。

  • 标准参数
    标准参数是以-开头的参数,这种参数是所有的JVM都会实现和支持的,并且会一直兼容,如-server 设置jvm的运行模式。
  • 系统属性参数
    系统属性参数通过-D设置,如-Dfile.encoding=UTF-8,设置编码。
  • 非标准参数
    非标准参数通过 -X 设置,这种参数并不保证所有JVM的都支持,并且不保证向后兼容,如 -Xms2g -Xmx4g,可以通过java -X查看当前jvm支持非标准参数都有哪些,如下:
bogon:~ xb$ java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
bogon:~ xb$ java -X

    -Xbatch           禁用后台编译
    -Xbootclasspath/a:<directories and zip/jar files separated by :>
                      附加在引导类路径末尾
    -Xcheck:jni       对 JNI 函数执行其他检查
    -Xcomp            在首次调用时强制编译方法
    -Xdebug           为实现向后兼容而提供
    -Xdiag            显示附加诊断消息
    -Xfuture          启用最严格的检查, 预期将来的默认值
    -Xint             仅解释模式执行
    -Xinternalversion
                      显示比 -version 选项更详细的 JVM
                      版本信息
...
  • 非稳定参数
    非稳定参数通过-XX:开头,其和具体的jvm有关,且随时可能随时在下一个版本中删除,具体使用在如下两种形式其中一种,如下:
-XX:+-flag
    打开某布尔的开关,如-XX:+UseG1GC设置使用G1 GC。
-XX:key=value
    通过kv的形式设置值,如-XX:MaxPermSize=256m,设置方法区大小为256m

2:参数分类

按照参数设置的内容可以分为如下6类,分别看下。

2.1:系统属性参数

系统属性参数首先我们可以在操作系统级别设置,如果是windows则是在如下界面设置:

在这里插入图片描述

如果是Linux则可以在/etc/profile等文件中配置,但是这种方式配置的是全局的,对所有的进程生效,另外一种就是通过 -D:k=v 设置进程的属性,如-Dmaven.test.skip.true,-Dfile.encoding=UTF-8,当然也可以通过System.setProperty来设置,如下测试:

在这里插入图片描述

2.2:内存大小参数

为了方便对应到具体的内存区域,我们先来看下jvm的内存结构,如下图:

在这里插入图片描述

先看下主要参数:

-Xms
    设置堆内存的初始大小,即最小内存
-Xmx
    设置堆的最大大小,一般-Xms和-Xmx设置为一样,这样可以避免堆内存扩容带来的性能抖动
-Xms   
    设置堆的young区的大小
-XX:MaxDirectMemorySize=size
    设置可以使用的最大堆外内存,即操作系统的内存,效果同-Dsun.nio.MaxDirectoryMemorySize=size
-Xss
    设置线程栈的大小,影响栈的深度,如-Xss1m,即设置线程栈的大小为1M,效果同-XX:ThreadStackSize=size

这些参数和jvm内存结构关系如下图:

在这里插入图片描述

2.3:GC相关参数

主要是设置使用何种类型的垃圾收集器,如下:

-XX:+UseG1GC 使用G1垃圾收集器
-XX:+UseConcMarkSweepGC 使用CMS垃圾收集器
-XX:+UseSerialGC 使用串行垃圾收集器
-XX:+UseParallelGC 使用并行垃圾收集器

2.4:分析诊断相关相关参数

-XX:+HeapDumpOnOutOfMemoryError 当发生OutOfMemoryError时,自动dump堆内存
    如,java -XX:+HeapDumpOnOutOfMemoryError -Xmx256m SomeJavaFile
-XX:+HeapDumpPath 与-XX:HeapDumpOnOutOfMemoryError 配合使用,设置发生了OOM后生成dump文件路径,如果是没有指定则默认为启动java程序的工作目录
    如,java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local -Xmx256m SomeJavaFile
-XX:OnOutOfMemoryError 抛出OutOfMemoryError错误时执行的脚本
-XX:ErrorFile=filename 致命错误的日志文件名称,绝对路径或者相对路径

2.5:javaagent

TODO 学习后补充!!!

写在后面

参考文章列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装mysql

1、环境&#xff08;虚拟机新安装的Redhat&#xff09;&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1jjdimuq-TrS8RASqGiU5Xg 提取码&#xff1a;2hef 2、检查系统是否已经安装了 MySQL rpm -aq | grep mysql 如果有旧版本就需要像下面卸载mariadb一样卸载掉。M…

希尔密码,云影密码 及例题

希尔密码 云影密码 题一 [HDCTF2023]–爬过小山去看云 题目描述&#xff1a; 密文&#xff1a;ymyvzjtxswwktetpyvpfmvcdgywktetpyvpfuedfnzdjsiujvpwktetpyvnzdjpfkjssvacdgywktetpyvnzdjqtincduedfpfkjssne 在山的那头&#xff0c;有3个人&#xff0c;4只鸟&#xff0c;19只…

Keepalived概念与安装部署过程

前言 目前互联网上主流高可用方案软件有keepalived、heartbeat&#xff0c;其中heartbeat是比较早期用来实现高可用软件的&#xff0c;而keepalived是目前轻量级&#xff0c;并且管理方便、易使用的高可用解决方案。 1.1 Keeplived高可用的功能 Keepalived是一个类似于工作在…

半监督学习经典工作:边缘生成对抗网络(MarginGAN)

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 论文标题&#xff1a;MarginGAN: Adversarial Training in Semi-Supervised Learning 论文链接: https://papers.nips.cc/paper/2019/file/517f24c02e620d5a4dac1db388664a63-Paper.pdf 代码链接&#xf…

ShardingCore安装笔记

由于本人采用Visual Studio的nuget管理器安装ShardingCore经常出现网络错误的问题&#xff0c;所以采用离线包的方式安装插件。 nueget包下载地址&#xff1a;NuGet Gallery | ShardingCore 7.7.1.8 ShardingCore使用版本7.7.1.7 1、下载各种依赖文件&#xff0c;并存放到系…

openTCS分析

一、openTCS概览 1. openTCS操作流程 打开ModelEditor设置点、路线、装货卸货等信息并保存模型打开Kernel和KernelControlCenter在ModelEditor上传模型打开KernelControlCenter设置车辆信息打开OperationsDesk打开OperationsDesk设置小车模式为可利用&#xff0c;并创建订单 …

USB 断开检测

文章目录 USB 断开检测带 Vbus 检测功能的 USB 设备断开不带 Vbus 检测功能的 USB 设备断开USB 设备端断开的检测USB 主机端断开的检测低速/全速设备高速设备 USB 断开检测 USB 主机和 USB 设备同样需要具有检测断开的能力。 USB 主机如果不能检测到 USB 设备的移除将会导致其…

测试虚拟驱动vivi

测试虚拟驱动vivi 文章目录 测试虚拟驱动vivi安装xawtv方法1方法2测试USB摄像头 测试虚拟摄像头vivi1.确定ubuntu的内核版本2. 去www.kernel.org下载同版本的内核修改Makefile测试体验 安装xawtv 方法1 sudo apt-get install xawtv方法2 源码xawtv-3.95.tar.gz: http://www.…

「2023最新」「阿米洛 VARMILO」双模机械键盘使用指南(快捷键组合)

前言 在说明书找不到的时候却需要使用键盘的某些特性时查一下 以阿米洛 minilo 尤加利为例 主要快捷键组合 开机 2 秒内连续敲击空格键三下&#xff0c;数字 1 或 2 或 3 键灯闪烁&#xff0c;键盘开机重新配对 长按 5 秒 Fn Q / W / E 键 &#xff08;分别对应数字 1 / 2…

《vector的一些OJ》

本文主利用我们的vector来解决一些OJ题 前三个题目很类似&#xff0c;分别为 一个数字只出现一次&#xff0c;其他数字都出现两次两个数字只出现一次&#xff0c;其他数字都出现两次一个数字只出现一次&#xff0c;其他数字都出现三次 文章目录 1、[一个只出现一次的数字&#…

vue3:自定义指令

一、理解vue指令 1.1、指令 在 vue 中提供了一些对于页面和数据更为方便的输出&#xff0c;这些操作就叫做指令&#xff0c;以 v-xxx 表示&#xff0c;比如 html 页面中的属性 <div v-xxx ></div>。自定义指令很大程度提高了开发效率&#xff0c;提高了工程化水平…

Makefile基础教程(伪目标)

文章目录 前言一、伪目标概念二、进一步了解伪目标三、不使用.PHONY来定义伪目标总结 前言 本篇文章将讲解Makefile中的伪目标&#xff0c;Makefile的目标在前面的文章中我们已经讲解了那么这篇文章我们就来讲讲伪目标。 一、伪目标概念 Makefile 伪目标是一类特殊的目标&am…

手机摄影(四)

第8章 人物拍摄 平拍显亲切 如果侧拍好看&#xff0c;可以选择 局部自拍表现神秘&#xff08;比如嘴唇&#xff0c;眼睛&#xff0c;锁骨&#xff0c;要足够惊艳&#xff09; 技巧&#xff1a; 简单背景适合人像和镜子回头&#xff08;幅度不能太大&#xff09;小清新&…

《NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis》论文精读

Abstract 我们提出了一种方法&#xff0c;通过使用稀疏的输入视图集优化底层连续体场景函数&#xff0c;实现了合成复杂场景新视图的最先进结果。我们的算法使用全连接(非卷积)深度网络表示场景&#xff0c;其输入是单个连续的5D坐标(空间位置(x, y, z)和观看方向(θ&#xff…

C++系列五:输入/输出

C输入输出 1. 输入2. 输出3. 格式化输出4. 总结 1. 输入 输入是指从外部源获得数据的过程&#xff0c; C中可通过键盘或文件等外部源来获取输入数据。 &#xff08;1&#xff09;cin cin是C标准库中的一个输入流对象&#xff0c;用于从标准输入设备&#xff08;通常是键盘&a…

如何评价滤波器的去噪效果?

假如使用两种滤波器&#xff0c;那么滤波效果如何去评价1&#xff1f; 为了能够得到高质量的去噪后信号&#xff0c;需要对滤波器的滤波效果进行评价&#xff0c;选取去噪效果最好的滤波器对原始信号进行去噪处理。 一般使用信噪比和峰值信噪比对滤波器进行量化评价&#xff0c…

Docker 基础实战:环境搭建、容器、仓库、镜像

文章目录 Docker 基础实战环境搭建容器启动容器新建并启动容器终止容器启动已终止容器创建守护态容器 容器日志查看日志日志驱动 进入容器docker attachdocker exec 容器信息docker psdocker inspectdocker topdocker stats 删除容器容器快照导出快照导入快照 仓库Docker Hub本…

软考--快速掌握七层模型与各种协议的划分

目录 协议族 网络层涉及的协议 传输层涉及的协议 应用层涉及的协议 协议族 认识几个协议族&#xff0c;所谓协议族就是说他不是单一的协议。而是很多协议拼在一起的。 TCP/IP协议族是internet的标准协议族&#xff0c;所以使用广&#xff0c;但是tcp/ip协议族传输效率是比较…

面试题:String,StringBuilder和StringBuffer的区别

面试题&#xff1a;String&#xff0c;StringBuilder和StringBuffer的区别 一、String 1、String是一个长度不可变的字符序列&#xff0c;底层是一个被final修饰的char[]数组。 2、任何对String类型进行改变的操作实际上都是重新生产一个新的String对象&#xff0c;然后将指…

micro-app在vue-element-admin中一些使用研究

1、简述 本文承接上一篇micro-app在vue-element-admi中的搭建&#xff0c;对micro-app在vue-element-admin中的一些平时开发中常用的功能做了一些研究。本文代码 2、路由 关于路由&#xff0c;这边从两方面进行研究&#xff0c;一方面是对菜单的配置&#xff0c;另一方面是页…