JVM参数、配置项含义

发布时间 2023-11-24 14:24:20作者: ShineLe

学习自:轻松永远记住经典jvm参数

Jvm 内存模型_jvm内存模型-CSDN博客

JVM参数总结 - 简书

有OutOfMemoryError有关的JVM参数_crash参数 java jvm_毛发旺盛的程序员的博客-CSDN博客

1、参数分类

参数开头有四种:-、-X、-XX、-D

 java jvm.参数 jvm参数 -d_ctaxnews的技术博客_51CTO博客

标志 类型 说明
- 标准参数 所有JVM都必须实现这些参数功能,并向后兼容
-X 非标准参数 默认JVM实现这些参数,但是并非所有JVM都实现,且不保证向后兼容
-XX 非stable参数 各个JVM实现有所不同,且将来会被随时取消,谨慎使用
-D 系统属性

作用同设置于JAVA_HOME中的配置项。

如果所有项都通过-D配置,那么会覆盖掉JAVA_HOME中的配置。

 

2、-X

参数 理解 说明
-Xms -X、memory、size 初始堆内存大小
-Xmx max 堆最大内存
-Xmn new 新生代内存
-Xss -X、stack、size 栈大小

 

3、-XX

参数 说明
MetaspaceSize

元空间初始大小。

该值太小会引起FULL GC。

MaxMetaspaceSize 元空间最大大小。

+UseParNewGC

 

新生代区域多线程GC模式。

常规收集器是Serial单线程模式。

来源:Java性能优化之JVM GC(垃圾回收机制) - 知乎

ParallelGCThreads

GC并发线程数。

谈JVM参数GC线程数ParallelGCThreads合理性设置

HeapDumpOnOutOfMemoryError

JVM会在遇到OutOfMemoryError时拍摄一个“堆转储快照”,并将其保存在一个文件中。

HeapDumpOnOutOfMemoryError堆转储实践和一些分析-CSDN博客

ExitOnOutOfMemoryError

传递此参数时,抛出OutOfMemoryError时JVM将立即退出。用于终止程序,常用于容器化部署情况下出错时快速终止并重启。

为什么 java 容器推荐使用 ExitOnOutOfMemoryError 而非 HeapDumpOnOutOfMemoryError ? - 简书

UseGCOverheadLimit

jvm会预判将要会发生OutOfMemery异常,就提早抛出这个异常。并不代表jvm没有内存空间了。

该参数会关闭JVM的预判功能

JVM参数解析_usegcoverheadlimit-CSDN博客

CMSInitiatingOcCupancyFraction

触发OldGC时,老年代内存使用率需要超过的阈值。

CMS垃圾收集器小实验之CMSInitiatingOccupancyFraction参数-CSDN博客

CMSClassUnloadingEnabled

Java类卸载功能是否开启。

类卸载:类加载器不需要某个类时,将其从内存中释放。

JVM标志CMSClassUnloadingEnabled实际上做了什么?_pdb文件实际上做了什么?_offsetStackFrame在JVM规范中做了什么 - 腾讯云开发者社区 - 腾讯云

ExplicitGCInvokesConcurrent

在做System.gc()时会做background模式CMS GC,即并行FULL GC,可提高FULL GC效率。

JVM参数总结 - 简书

CrashOnOutOfMemoryError

传入此参数时,JVM将在抛出OutOfMemoryError时立即退出。除了退出,JVM还会生成文本和二进制崩溃文件(如果启用了核心文件)。

有OutOfMemoryError有关的JVM参数_crash参数 java jvm_毛发旺盛的程序员的博客-CSDN博客

4、-D

参数

说明

-Dmarathon.app.id

-Dhostname

可以理解为是一些环境变量,最终会传入系统中使用。
-Duser.timezone、language、country 时区、语言、地区