JVM常用配置

本文深入解析JVM参数配置,包括初始堆、最大堆、年轻代大小等关键参数的作用与默认值,以及如何通过调整参数提升Java应用性能。附带常用JVM命令行工具介绍,如jps、jmap等。

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

参考:

jvm配置官方文档(JDK7及更早)

JVM参数详解

 

参数说明示例默认值
-Xms初始堆大小-Xms128m 
-Xmx最大堆大小-Xmx256m 
-Xmn年轻代大小-Xmn64m堆大小1/3
-Xss

单个线程的堆大小。

该参数越小,可同时容纳的线程数(并发数)越高。

但是操作系统对一个进程内的线程数有限制,经验值在3000~5000左右

-Xss256k

JDK5以前为256K

JDK5以后为1M

 

-XX:NewRatio

老年代/新生代 的比值

注:如果设定了-Xmn的值,该配置会被忽略

-XX:NewRatio=32
-XX:SurvivorRatioEden/to或者from 的比值-XX:SurvivorRatio=78
-XX:MinHeapFreeRatio当堆内存空闲率低于该设定值时,开始扩容-XX:MinHeapFreeRatio=5040
-XX:MaxHeapFreeRatio当堆内存空闲率高于该设定值时,开始缩容-XX:MaxHeapFreeRatio=7570
    

 

示例:

未手动设置任何jvm参数时,默认参数如下:

 

 

附:常用jvm命令行工具

jps:显示当前所有java进程及其pid

jmap -heap <pid>:打印当前pid的堆内存使用概况

jmap -dump:live,format=b,file=<快照路径> <pid>:保存当前pid的内存快照(参数值带live,dump之前会进行Full GC,如果不希望进行Full GC,请勿设置live参数值)

### JVM常用命令及功能介绍 #### 1. **jps (Java Virtual Machine Process Status Tool)** `jps` 是一种用于显示当前系统中所有 Java 进程的状态的工具。它可以帮助开发者快速定位正在运行的 Java 应用程序以及其对应的进程 ID(PID)。通过 `jps -v` 参数,还可以进一步查看启动该应用程序时所使用的 JVM 参数和选项[^1]。 ```bash $ jps -lv ``` 上述命令将列出所有 Java 进程及其完整的类路径和传递给 JVM 的参数。 --- #### 2. **jinfo (Java Configuration Information)** `jinfo` 工具允许用户动态获取并调整正在运行的 Java 虚拟机实例的相关配置信息。这包括但限于 JVM 启动时指定的各种参数设置。此外,在某些特定场景下,也可以利用此工具来修改部分 JVM 配置项[^2]^,^[^4]。 例如,要查询某个 PID 对应的 JVM 所加载的所有参数: ```bash $ jinfo -flags <pid> ``` 如果需要生成堆转储文件,则可以通过如下方式实现;过需要注意的是,这一操作可能带来一定的性能开销,尤其是在大内存环境中更需谨慎对待: ```bash $ jmap -dump:live,format=b,file=heap.bin <pid> ``` 尽管这里提到的是 `jmap`, 它同样属于 JDK 自带的一系列诊断工具之一,与本节讨论的内容密切相关。 --- #### 3. **jstat (Java Virtual Machine Statistics Monitoring Tool)** 作为一款强大的监控利器,`jstat` 提供了关于 JVM 性能统计方面的详尽数据,涵盖了诸如垃圾回收行为、方法区使用状况等多个维度的信息展示服务[^3]. 用户能够依据实际需求选取同的观测角度来进行深入分析: - `-gcutil`: 显示 GC 活动概览; - `-gccapacity`: 展现各代对象存储区域容量详情; - `-class`: 关注类加载器的工作表现等等... 下面给出一段简单的脚本例子以便更好地理解如何运用这些选项完成周期性的采样工作: ```bash #!/bin/bash for i in {1..10}; do echo "Sample $i" jstat -gcutil $(pgrep java) 1000 1 | awk '{print strftime("%Y-%m-%d %H:%M:%S"), $0}' done ``` 以上代码片段每隔一秒打印一次目标进程中有关垃圾收集利用率的变化趋势记录下来,并附加时间戳便于后续追踪审查之便. --- #### 4. **其他重要说明** 值得注意的是,尽管目前市面上存在众多针对 JVM 调优设计得更加友好的图形界面型产品可供选择,但从原理层面出发掌握好基础命令行交互手段依旧十分必要。因为它们构成了更高层次解决方案的基础构建模块. --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值