JVM启动参数全解

JVM启动参数

一、标准参数
1.-server
-client
虚拟机服务器模式/客户机模式,使用server模

式可以提高性能,启动比client模式慢,长期运

行则比client模式快。当该参数不指定时,虚拟

机启动检测主机是否为服务器,如果是则以

server模式启动,否则以client模式启动,

J2SE5.0检测的根据是至少2个CPU和最低2GB内存
2.-agentlib:<lib-name>=<options>
-agentpath:<lib-path>=<options>
本地类库加载,当你的部分类包含一些本地方法

时,需要自己编写本地代码并位于操作系统加载

共享包(dll)的路径上,如果你不喜欢将该包放

在操作系统识别的加载上,则可以通过指定这个

参数来加载自己的本地共享包(dll)。不同之处

在于-agentlib中仅指定包名,根据操作系统的

不同虚拟机在一定路径上搜索该包,譬如对于

windows平台虚拟机在PATH路径上搜索该包,而

lib-path则是指定全路径,例如
-agentlib:hprof 在windows平台虚拟机会在启

动时到PATH路径上搜索hprof.dll并加载
虚拟机在加载代理包之后有一个启动的操作(详

细参见JDK参考),<options>指的是代理包的启

动参数
3.-classpath classpath
-c classpath
指定类路径,系统应用类加载器(ClassLoader)

会到该路径下加载类
4.-Dproperty=value
设置系统属性,可以通过System.getProperty

(property)获得
5.-enableassertions[:<package name>"..." |

:<class name> ]
-ea[:<package name>"..." | :<class name> ]
-disableassertions[:<package name>"..." |

:<class ; ]
-da[:<package name>"..." | :<class name> ]
启用和停用断言,默认是停用断言。断言指的是

从JDK1.4开始在支持的关键字assert,assert

(booleanvalue),当booleanvalue为false时,

抛出java.lang.AssertionError,必须指出的是

,代码编译必须是1.4及其以上顺从的,即编译

时使用如下参数
java -source 1.4
一般仅在开发阶段启用断言,而在运行阶段不使

用
其使用包括如下几种情况
java -ea //启动断言
java -ea:pkname... //在包pkname及其子包下

起用断言
java -ea:pkname.classname //对类

pkname.classname启用断言
停用断言与启用设置类似
6.-enablesystemassertions
-esa
-disablesystemassertions
-dsa
启用和停用系统类断言
7.-jar
运行包含在一个jar包里的程序,一般在jar包的

/META-INF/MANIFEST.MF文件中指定Main-Class

值为要运行的主函数,譬如 Main-

Class:ayufox.ejb3.Test
8.-javaagent:<classname>[<=options>]
加载java语言代理,该功能是JDK5新增加的,可

以通过该设置在JVM运行主函数(main)之前做一

些预处理工作,其中classname中必须包含有静

态方法
public static void premain(String

agentArgs, Instrumentation inst) { ... }
上面的options即是传入该函数的代理参数

agentArgs,关于Instrumentation详细参见包

java.lang.instrument
9.-verbose
-verbose:class
-verbose:gc
-verbose:jni
在运行时
class:将类加载情况在控制台中打印出来
gc:将虚拟机的垃圾回收事件信息打印
jni:放本地方法调用信息打印
-verbose与-verbose:class一样
10.-version
-showversion
显示版本信息,不同在于第一种显示版本后虚拟

机结束退出
11.-?
-help
显示帮助信息并退出
12.-X
显示非标准参数(见下面介绍)并退出

二、非标准参数(以-X开头)
1.-Xint
所有字节码以解析模式运行。第一代虚拟机即是

以这种方式运行,由于需要Java解析器解析运行

,所以效率比较低;第二代虚拟机则采用将字节

码编译成本地代码的方式,效率大大提高;第三

代虚拟机也叫自适应(HotSpot)虚拟机,通过监

测代码的执行情况检测出代码被频繁执行的部分

,将其尽量优化成本地代码方式运行,而对于普

通部分,则采用解析的模式运行。
2.-Xbatch
禁止后台编译,一般HotSpot虚拟机在检测到一

段代码为频繁执行代码需要将其编译成本地代码

时,会启动一个后台线程完成这个工作,而同时

采用解析的方式继续运行字节码。如果设置了该

参数,则会停止继续执行字节码,先将其编译成

本地代码,然后再继续执行。
3.-Xdebug
-Xnoagent
-Xrun
-Xrunjdwp
启用调试模式,见前面的《利用JPDA构建调试平

台》这篇文章,后面将在一个独立的文章中详细

介绍
4.-Xbootclasspath:bootclasspath
-Xbootclasspath/a:path
-Xbootclasspath/p:path
设置启动根Classpath,即使启动类加载器将在

何处加载对象,关于类启动加载器,参见《JVM

类加载器体系结构》说明,分号后面的值指定路

径,以分号隔开。其区别在于,-

Xbootclasspath:bootclasspath将新的根加载路

径覆盖默认的路径(\jre\lib\rt.jar),-

Xbootclasspath/a:path将新的根加载路径和原

有的根加载路径相结合,-

Xbootclaspath/p:path将新的根加载路径与原有

的根加载路径相结合,加载类时优先搜索该加载

路径
5.-Xcheck:jni
对本地调用(JNI)采用更严格的检测方式,在

进行JNI调用之前检测数据和传入参数,如果碰

到不合法的数据则强制结束掉虚拟机,对运行性

能有损害
6.-Xfuture
对类格式(class文件格式)采用更严格的检测方

式,以便向后兼容,最好在开发时采用该参数
7.-Xnoclassgc
不使用垃圾回收
8.-Xloggc:file
与-verbose:gc功能一样,不同在于-

Xloggc:file将信息记录到一个文件,而-

verbose:gc将其输出到控制台
9.-Xincgc
-Xmsn
-Xmxn
-Xssn
跟内存分配和垃圾回收相关,-Xincgc表示采用

渐进式垃圾回收,-Xmsn设置初始内存池大小,

-Xmxn表示内存池允许的最大大小,-Xssn是线程

栈大小,n是要设置的值,必须是1024的倍数,

譬如
-Xms6291456 -Xmx83886080
-Xms6144k -Xmx81920k
-Xms6m -Xmx80m
该部分对虚拟机的性能非常重要,在后面将有独

立的篇章详细介绍
10.-Xprof
-Xrunhprof[:help]

[:<suboption>=<value>,...]
在运行时剖析运行情况,并将剖析结果打印到控

制台,其中后一个可以指定特定剖析对象,譬如

cpu,堆(heap)等,可以运行java -

Xrunhprof:help获得可以剖析的对象和取值
11.-Xrs
减少JVM对操作系统信号量的使用,J2SE1.3.1开

始引入。
SUN在J2SE1.3.0中增加了Java应用程序关闭时的

回调钩子(Hook),以便当JVM意外终止时用户可

以做一些资源清除工作。JVM监视控制台事件以

实现JVM意外终止时的回调。JVM明确地注册了一

个控制台控制处理器,当JVM接收到

CTRL_C_EVENT, CTRL_CLOSE_EVENT,

CTRL_LOGOFF_EVENT, 或CTRL_SHUTDOWN事件时,

该处理器介入关闭回掉钩子(HOOK)的处理。
如果虚拟机以服务的方式运行(譬如WEB服务器

)当其收到CTRL_LOGOFF_EVENT事件,由于系统

并不会因此终止JVM进程,故JVM不可以进行终止

的操作,然而这与如上产生了冲突(不结束却又

调用关闭回调钩子),为了避免这个问题,从

J2SE1.3.1使用-Xrs以使JVM不再监测控制台事件
JVM源码剖析之Java命令行参数全解 最近,有一位网友询问关于Java命令行参数方面的问题,因为在Java中参数有很多种,有不少的读者一直没弄明白,所以特意写下此篇文章。此篇文章分2大块,第一块是不同参数的解释,第2块就是JVM源码论证~图1-1给出了运行Java代码的命令行,其中包括了启动命令和不同种类的参数,分别用红、黄、黑、绿、蓝、粉 6种颜色代表。 阅读详情

相关推荐

IntelliJ IDEA实战:Java应用启动参数配置全解(VM Options、Program Arguments、环境变量)

本文详细解析了在IntelliJ IDEA中配置Java应用启动参数的完整指南,包括VM Options、Program Arguments和环境变量的区别与实战技巧。通过具体案例演示了内存调优、Spring Boot参数传递及多环境配置方案,帮助开发者高效管理Java应用启动配置。

weixin_42533622的博客 465

JVM之启动参数

JVM的启动参数JVM启动参数格式种类以 - 开头以-D开头以 -X 开头以 –XX:开头设置当前Java进程的启动参数JVM启动参数功能分类系统属性参数运行模式参数堆内存设置参数设置堆内设置非堆设置堆外GC 设置参数分析诊断参数JavaAgent 参数 JVM启动参数格式种类 以 - 开头 以 - 开头为标准参数,所有的 JVM 都要实现这些参数,并且向后兼容 例如:-server 以-D开头 -D 设置系统属性 例如:-Dfile.encoding=UTF-8 以 -X 开头 以 -X 开头为

animatelife的博客 2485

基于CY7C68013A芯片的USB2.0设计

基于FPGA的USB2.0读写控制项目简介CY7C68013A芯片介绍CY7C68013A芯片读写时序控制CY7C68013A芯片读写代码USB2.0的测试结果结束语 项目简介 我们前面已经写过了USB3.0的FPGA实现,所用到的芯片是FX600Q芯片,这次我们讲解USB2.0的FPGA代码的编写。我们用到的芯片是Cypress厂家的Cy7C68013A,该款芯片在市场上的应用率极广,我们这里不...

zhangningning1996的博客 1万+

【JVM】JVM启动参数

JVM启动参数概述 以 - 开头为标准参数,所有的 JVM 都要实现这些参数,并且向后兼容。 -D 设置系统属性。 以 -X 开头为非标准参数, 基本都是传给 JVM 的,默认 JVM 实现这些参数的功能,但是并不保证所有 JVM 实现都满足,且不保证向后兼容。 可以使用 java -X 命令来查看当前JVM 支持的非标准参数。 以 –XX:开头为非稳定参数, 专门用于控制 JVM的行为,跟具体的 JVM 实现有关,随时可能会在下个版本取消。 -XX:±Flags 形式, ± 是对布尔值进行开关。 -XX

u010243531的博客 599

瑞昱RTL8735B开发板深度评测:如何用200元板子搞定1080P视频流+AI推理?

本文深度评测瑞昱RTL8735B开发板(AMB82 MINI),解析其如何在200元预算内实现1080P视频流处理与边缘AI推理。该板搭载0.4TOPS NPU算力,支持H.264/H.265编码,适合物联网开发者构建高性价比边缘计算方案,并详细介绍了硬件架构、AI模型优化及实战项目搭建。

weixin_33712987的博客 522

ReportStudio入门教程(四十一) - 固定报表列宽

我们继续上一篇博客,让他看起来

什么是江湖? 3518

JVM常用启动参数

目录JVM常用启动参数系统属性参数运行模式参数堆内存设置参数显式指定堆内存`–Xms`和`-Xmx`显式新生代内存显示指定永久代/元空间的大小其他常用参数GC设置参数垃圾回收器GC记录分析诊断参数JavaAgent参数 文章放置于:https://github.com/zgkaii/CS-Study-Notes,欢迎批评指正! JVM常用启动参数 JVM启动参数的前缀主要有-、-D、-X、-XX、+/-、: 以-开头为标准参数,所以的JVM都要实现这些参数,并且向后兼容。例如-server。 -D

Stay Hungry, Stay Foolish! 5612

告别密码烦恼:用Windows Server NPS给公司Wi-Fi和有线网加一道MAC地址白名单(附H3C交换机配置)

本文详细介绍了如何利用Windows Server NPS(网络策略服务器)与H3C交换机实现MAC地址白名单认证,为企业Wi-Fi和有线网络提供零密码安全方案。通过配置NPS服务器、网络策略及H3C交换机联调,实现无感知认证体验,降低运维负担,同时满足审计追溯需求。适用于中小企业网络管理,提升安全性与便捷性。

weixin_42535703的博客 367

JVM启动参数详解(含调优)

java启动参数共分为三类;其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;本文主要描述标准参数部分,剩下的两个部分将会陆续推出;标准参数列表如下:-client。

m0_67403272的博客 1962

手把手教你实现RK3588的Secure Boot:密钥烧录与镜像签名验证

摘要:本文详细介绍了瑞芯微RK3588平台下SecureBoot的密钥烧录与镜像签名验证实现方法。首先阐述了SecureBoot的工作原理、安全优势及其在RK3588智能安防、工业控制等场景中的重要作用。接着分步骤指导了硬件准备、软件工具配置、密钥对生成等准备工作,并详细说明了进入烧录模式、工具选择配置、密钥烧录执行等关键操作流程。文章还解析了镜像签名生成与验证机制,包括启动验证流程和常见故障处理方法。最后对SecureBoot在RK3588设备中的未来应用进行了展望,强调其与TrustZone等安全技术融

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2046

解锁PyCharm+Deepseek:本地部署AI编程超能力

在本次探索中,我们成功地在 PyCharm 中实现了 DeepSeek 的本地化部署,这一过程虽然涉及多个步骤,但每一步都为我们开启 AI 编程大门奠定了基础。从安装最新版 PyCharm,确保我们拥有一个功能强大且兼容性良好的开发环境,到注册 DeepSeek 账号并获取 API Key,这是连接我们与强大 AI 能力的关键纽带。接着,在 PyCharm 中安装 Continue 插件并进行精细配置,让 DeepSeek 能够深度融入我们的编程流程。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 5550

JVM参数汇总

一、java启动参数共分为三类: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容; 其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,这些都是不稳定的并且不推荐在生产环境中使用。将来可能会随时取消,需要慎重使用;上都被实现),而且如果在新...

kevin_pull的专栏 401

OpenCASCADE:Direct3D CSharp 示例

OpenCASCADE:Direct3D CSharp 示例OpenCASCADE:Direct3D CSharp 示例 OpenCASCADE:Direct3D CSharp 示例 此示例演示了如何在使用CSharp和Windows Presentation Foundation (WPF)编写的.Net应用程序中使用 OCCT 和 DirectX 库。 .Net、OCCT (C++) 和 DirectX 级别之间的连接由用 C++/CLI 编写的代理库OCCProxy和D3DProxy提供。代理库OCC

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1827

JVM参数到底配在哪?7大场景全解,新手不再迷茫!

一文解决JVM参数配置的位置难题。覆盖IDE、Spring Boot、Tomcat、Docker及K8s等全部核心场景,并提供具体配置示例和最佳实践。帮助你快速将理论知识应用于实际项目,实现高效调优。

qq_31676725的博客 1291

Error: Flash Download failed - Target DLL has been cancelled

由于换了新电脑,keil重装了下,然而之前的MCU的支持包没有安装,以及一些其他的问题,导致可以编译但是不能将程序烧录到单片机中。现整理一下解决思路: 1、将支持包下载并添加: 找到你需要用的MCU的具体型号: 例如: 点击网址,下载安装包,或者在csdn等其他网址下载安装包,将下载好的pack包放到keil5的安装目录下的.Download中: 点击file中的import,将路径选择到.........

hanhan的博客 5万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Arthas - jvm 命令全解,实时监控 JVM 运行状态

Arthas 是一个基于命令行的 Java 诊断工具,支持 JDK 6+,能够在生产环境中安全地诊断任意 Java 进程。✅无需重启应用✅无需添加任何依赖或 Agent✅支持热更新、反编译、调用链追踪✅提供丰富的命令集,覆盖类、方法、线程、内存等多个维度某个接口突然变慢,但日志看不出原因 ⏳内存占用持续增长,怀疑存在内存泄漏 💣想知道某个方法被谁调用了,参数是什么 🔍生产环境出现死锁,急需定位线程堆栈 🔄Arthas 正是为了应对这些“线上疑难杂症”而生。

千淘万漉虽辛苦,吹尽狂沙始到金 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

JVM专题全解

一、GC的三个流程 1.什么时候进行垃圾回收 2.那些对象可以被回收 引用计数法: 根可达法: 3.如何进行回收

Malax的博客 380

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JVM性能调优实战全解

Heap Dump 是JVM某一时刻的堆内存快照文件,保存所有对象实例、引用关系、内存占用、线程堆栈信息,是排查OOM、内存泄漏、对象堆积的最核心依据。分为两种:全量dump:包含存活+死亡对象,文件大、信息全;live dump:仅存活对象,体积小、定位问题更精准,生产推荐。jstack PID:打印所有线程堆栈信息、线程状态、调用链路;:长列表模式,打印锁详细信息,专门排查死锁;:强制导出线程堆栈,应对进程卡死、无响应场景;:输出日志落地,用于离线分析。作用。

只要肯攀登,终有登顶时 790

JVM内存管理面试常见问题全解

> Java Virtual Machine(Java虚拟机)是java程序实现跨平台的⼀个重要的⼯具(部件)。 > HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是⽬前使⽤范围最⼴的Java虚拟机。 > 只要装有JVM的平台,都可以运⾏java程序。那么Java程序在JVM上是怎么被运⾏的? > 通过介绍以下JVM的三个组成部分,就可以了解到JVM内部的⼯作机制

m0_49303490的博客 1121

JVM性能监控之命令行工具全解

Jdk自带监控命令行工具全解,包括jps、jstat、jinfo、jmap、jhat、jstack、jcm、jstatd

全栈行动派的博客 1888

8.JVM 调优

JVM概述与类的加载机制 JVM 调优8 JVM 调优8.1 性能监控,故障处理工具8.1.1 jps:虚拟机进程状况工具8.1.2 jstat:虚拟机统计信息监视工具8.1.3 jinfo:Java 配置信息工具8.1.4 jmap:Java 内存映像工具8.1.5 jhat:虚拟机堆转储快照分析工具8.1.6 jstack:Java 堆栈跟踪工具8.2 可视化故障处理工具8.2.1 jhsdb 基于服务性代理的调试工具8.2.1.1 启动8.2.1.2 使用8.2.2 jconsole Java 监视与

不断学习,不断记录,不断提升 1994

Java虚拟机(JVM)入门全解:从“黑盒子”到“透明厨房”

零基础读懂JVM:用菜谱、公寓、保洁阿姨等生活比喻,讲清JVM角色、内存分区、类加载、GC原理及避坑指南,小白也能轻松入门!

weixin_42908166的博客 341

JVM知识点详解

JVM知识点详解:类的加载与卸载、内存模型、类的生命周期、垃圾收集算法、垃圾收集器、调优命令,gc。

ziania_cumt的博客 428

JVM--12-OOM实战全解:7种溢出复现、MAT定位、代码修复与生产最佳实践(下)

在 Java 应用发生 OutOfMemoryError(OOM) 后,精准定位内存泄漏根源是关键。本节介绍三款互补的核心诊断工具:三者结合,可覆盖“事前监控 → 事中诊断 → 事后分析”全链路。下载地址: https://www.eclipse.org/downloads/download.php?file=/mat/1.16.1/rcp/MemoryAnalyzer-1.16.1.20250109-win32.win32.x86_64.zip配置文件(MemoryAnalyzer.ini)建议修改如下:

weisian的博客 1万+

Nacos 集群模式启动失败 “Error occurred during initialization of VM” 问题和ERROR: Please set the JAVA_HOME问题全解

解决“Error occurred during initialization of VM”和“ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better!!!”问题

m0_73784704的博客 1795

Java 深入解析:JVM对象创建与内存机制全景图

本文系统、深入地讲解了Java 8中JVM对象的创建、内存布局、访问定位方式、与垃圾回收器的交互、以及内存管理机制(包括堆与非堆内存)。同时还扩展探讨了对象引用类型、对象的equals与hashCode机制、序列化实现原理及其对性能的影响。全篇配有Java 8代码示例,理论与实战并重,帮助读者全面掌握JVM对象的工作机制,是每一位Java开发者都不容错过的进阶指南

持续输出Java相关知识 1232
上一篇: Oracle数据库备份命令Exp/Imp
下一篇: 利用Shell脚本获取前天日期
waitgod
博客等级 码龄19年 14粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值