jvm_参数含义

本文介绍了JVM的各种关键参数设置,包括堆内存的最小值和最大值、新生代大小、栈容量等,同时还涵盖了如何在发生内存溢出时自动生成堆转储快照的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-Xms 堆的最小值
-Xmx 堆的最大值
-Xmn 新生代大小(Eden+from Survivor+to Survivor)
-XX:+HeapDumpOnOutOfMemoryError 让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便事后进行分析
-Xss 栈容量
-XX:PermSize 方法区最小值
-XX:MaxPermSize 方法区最大值
-XX:MaxDirectMemorySize 最大DirectMemory值

<think>我们正在讨论JVM参数及其作用。根据引用内容,JVM参数分为标准参数(-开头)和非标准参数(-X开头),还有一些是-XX开头的参数。用户要求解释JVM参数的作用和含义。 首先,我们需要明确JVM参数的主要分类:1.标准参数:所有JVM实现都必须支持,相对稳定。例如:-version,-help等。2.-X参数:非标准参数,不同JVM实现可能不同,不保证向后兼容。例如:-Xms,-Xmx等。 3. -XX参数:不稳定参数,用于控制JVM的底层行为,可能会随时变更。这些参数又分为布尔型(+/-)和键值对型。接下来,我们将解释一些常见且重要的JVM参数及其作用。1.内存相关参数:--Xms:设置初始堆大小。例如:-Xms256m表示初始堆大小为256MB。- -Xmx:设置最大堆大小。例如:-Xmx1024m表示最大堆大小为1024MB。- -Xmn:设置年轻代(Young Generation)的大小。例如:-Xmn256m表示年轻代大小为256MB。--Xss:设置每个线程的栈大小。例如:-Xss1m表示每个线程栈大小为1MB。 2.垃圾回收相关参数:--XX:+UseSerialGC:启用串行垃圾回收器。--XX:+UseParallelGC:启用并行垃圾回收器(也称为吞吐量优先收集器)。--XX:+UseConcMarkSweepGC:启用CMS(并发标记清除)垃圾回收器(在JDK9中被标记为废弃,在JDK14中被移除)。--XX:+UseG1GC:启用G1垃圾回收器(JDK9及以后的默认垃圾回收器)。 3.其他常用参数:--XX:NewRatio:设置老年代(OldGeneration)与年轻代(Young Generation)的比例。例如:-XX:NewRatio=2表示老年代与年轻代的比例为2:1,即年轻代占堆的1/3,老年代占2/3。- -XX:SurvivorRatio:设置Eden区与Survivor区的比例。例如:-XX:SurvivorRatio=8表示Eden区与一个Survivor区的比例是8:1,即每个Survivor区占年轻代的1/10(因为有两个Survivor区,所以Eden占8/10)。4.调试/日志相关参数:--XX:+PrintGCDetails:打印GC的详细日志。--XX:+PrintGCDateStamps:在GC日志中打印时间戳。--XX:+HeapDumpOnOutOfMemoryError:当发生内存溢出(OOM)时生成堆转储文件(heapdump)。注意:参数中的`+`表示开启,`-`表示关闭。例如,-XX:+UseG1GC表示开启G1GC,而-XX:-UseG1GC表示关闭G1GC。 关于如何查看当前JVM参数,可以使用以下命令:- `java-XX:+PrintFlagsFinal`:查看所有JVM参数的最终值(包括默认值和修改值)。- `jinfo-flags<pid>`:查看运行中Java进程的JVM参数。另外,引用[2]中提到,参数值有两种表示方式:-`=`:表示默认值。 -`:=`:表示被用户或JVM修改后的值。例如,在`java -XX:+PrintFlagsFinal`的输出中,可以看到类似:``` uintx InitialHeapSize:=268435456//表示初始堆大小被设置为256MB(268435456字节)``` 现在,我们可以根据上述内容组织回答。注意:用户要求生成相关问题,因此我们在回答后需要添加相关问题。</think>### JVM参数详解及作用 #### 一、参数分类 1. **标准参数(-开头)** 所有JVM实现必须支持,如`-version`(显示版本)、`-help`(查看帮助)等。 2. **-X参数(非标准参数)** JVM实现特定功能,不保证跨版本兼容。通过`java -X`查看支持列表: - `-Xms<size>`:设置初始堆大小(如`-Xms256m`) - `-Xmx<size>`:设置最大堆大小(如`-Xmx1024m`) - `-Xss<size>`:设置线程栈大小(如`-Xss1m`),影响线程深度和并发能力[^3] 3. **-XX参数(高级调优)** 分两类: - **布尔型**:`-XX:+<option>`启用 / `-XX:-<option>`禁用 例:`-XX:+UseG1GC`(启用G1垃圾回收器) - **键值型**:`-XX:<key>=<value>` 例:`-XX:MaxGCPauseMillis=200`(设置最大GC停顿时间) #### 二、核心参数作用 | 参数 | 作用 | 影响场景 | |-----------------|----------------------------------------------------------------------|----------------------------| | `-Xms/-Xmx` | 堆内存初始/最大值,避免频繁扩容 | 内存敏感应用(如大数据处理) | | `-Xss` | 线程栈大小,栈深度不足会引发`StackOverflowError` | 高并发、递归调用场景[^3] | | `-XX:NewRatio` | 老年代与年轻代比例(默认2:1) | 对象生命周期调优 | | `-XX:SurvivorRatio` | Eden区与Survivor区比例(默认8:1) | 年轻代对象分配策略 | | `-XX:+HeapDumpOnOutOfMemoryError` | OOM时自动生成堆转储文件 | 内存泄漏排查 | #### 三、性能调优示例 ```java // 典型高吞吐场景配置 java -Xms2g -Xmx4g -Xss512k \ -XX:+UseParallelGC \ -XX:NewRatio=3 \ -XX:SurvivorRatio=8 \ -jar app.jar ``` - **堆设置**:初始2GB,最大4GB(避免动态扩容开销) - **GC选择**:并行收集器(CPU密集型场景) - **代比例**:老年代占堆75%(`NewRatio=3`即年轻代:老年代=1:3) - **Survivor**:Eden区占年轻代80%(减少对象晋升)[^4] > **关键原则**:通过`jinfo <pid>`查看运行时参数值(`:=`表示被修改的值),避免盲目设置[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值