常用JVM选项

-XX:+TraceClassLoading 输出类的加载过程

-XX:+TraceClassUnLoading 输出类的卸载过程

-XX:ReservedCodeCacheSize 设置JIT优化后的代码缓存的空间CodeCache,默认48M

-XX:+Use CodeCacheFlushing 清理CodeCache

-XX:CICompilerCount 设置的相对较大可以一定程度提升JIT编译的速度,默认为2

-XX:+PrintFlagsFinal 查看JVM选项默认值,如下:

........
 bool UseXmmI2D                                 = false           {ARCH product}      
     bool UseXmmI2F                                 = false           {ARCH product}      
     bool UseXmmLoadAndClearUpper                   = true            {ARCH product}      
     bool UseXmmRegToRegMoveAll                     = true            {ARCH product}      
     bool VMThreadHintNoPreempt                     = false           {product}           
     intx VMThreadPriority                          = -1              {product}           
     intx VMThreadStackSize                         = 0               {pd product}        
     intx ValueMapInitialSize                       = 11              {C1 product}        
     intx ValueMapMaxLoopSize                       = 8               {C1 product}        
     intx ValueSearchLimit                          = 1000            {C2 product}        
     bool VerifyMergedCPBytecodes                   = true            {product}           
     intx WorkAroundNPTLTimedWaitHang               = 1               {product}           
    uintx YoungGenerationSizeIncrement              = 20              {product}           
    uintx YoungGenerationSizeSupplement             = 80              {product}           
    uintx YoungGenerationSizeSupplementDecay        = 8               {product}           
    uintx YoungPLABSize                             = 4096            {product}           
     bool ZeroTLAB                                  = false           {product}           
     intx hashCode                                  = 0               {product}           

-XX:+PrintCommandLineFlags 打印真正的参数启动命令,如下:

-XX:InitialHeapSize=266354048 -XX:MaxHeapSize=4261664768 -XX:+PrintCommandLineFlags -XX:+PrintFlagsFinal -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC 

-XX:+PrintFlagsInitial 打印程序中设置好的默认值,不是系统启动时设置的,比如
这里写图片描述
我启动时设置的1G,打印出来的是4G。
-XX:MinHeapFreeRatio 这个很多人应该都熟悉,是JVM堆内存需要扩大的最小比例,堆内存剩余空间低于这个比例时会开始变大,它有个兄弟
-XX:MaxHeapFreeRatio ,当堆内存剩余空间高于这个比例时,会开始变小
-XX:PretenureSizeThreshold 当新建对象大于这个值时,会直接进入老年代
-XX:SurvivorRatio Eden/Survivor的比重(注意是一个Survivor)
-XX:InitialSurvivorRatio Young/S0的比重
-XX:+UseAdaptiveSizePolicy 动态调整Survivor的大小,默认开启(注意这里的默认是指其他GC 参数也是默认的,如果修改了其他参数,默认关闭)
-XX:MaxTenuringThreshold 新生代对象Minor GC次数达到该值后,会进入老年代(一般不修改)
-XX:+PrintGCDetails 输出 heap 区域的 GC 信息

### 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 调优设计得更加友好的图形界面型产品可供选择,但从原理层面出发掌握好基础命令行交互手段依旧十分必要。因为它们构成了更高层次解决方案的基础构建模块. --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天进步一点_点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值