【jvm】主要参数

Java 虚拟机(JVM)有许多参数用于控制其行为和性能,下面是一些 主要的 JVM 启动参数,这些参数通常分为以下几类:

  1. 内存管理相关参数
    这些参数主要用来配置 JVM 的内存分配策略、堆内存、栈内存等。

-Xms

设置 JVM 启动时堆的初始内存大小(单位:字节、KB、MB、GB)。例如 -Xms512m 表示堆的初始大小为 512MB。

-Xmx

设置堆的最大内存大小(单位:字节、KB、MB、GB)。例如 -Xmx1024m 表示堆的最大大小为 1024MB。

java -XX:+PrintFlagsFinal -version | grep HeapSize

-Xmn

设置年轻代(Young Generation)的大小。年轻代内存用于存储新创建的对象。这个参数通常与 -Xmx 和 -Xms 配合使用。

-XX:NewSize= 和 -XX:MaxNewSize=

分别设置新生代(Young Generation)的初始大小和最大大小。

-XX:SurvivorRatio=

设置年轻代中 Eden 区和 Survivor 区的大小比率。默认是 8,意味着 Eden 区是 Survivor 区的 8 倍大小。

-XX:PermSize= 和 -XX:MaxPermSize=

设置永久代(PermGen)的初始大小和最大大小(JDK 8 后被 Metaspace 取代)。例如 -XX:MaxPermSize=256m。

-XX:MetaspaceSize= 和 -XX:MaxMetaspaceSize=

设置 Metaspace 的初始大小和最大大小(在 JDK 8 中,PermGen 被 Metaspace 替代)。

-XX:+UseG1GC

启用 G1 垃圾回收器。G1 是一种低延迟的垃圾回收器,适用于需要大堆并且需要低延迟的应用程序。

  1. 垃圾回收相关参数
    这些参数用于控制 JVM 中垃圾回收的行为。

-XX:+UseSerialGC

启用串行垃圾回收器(适合单线程环境)。

-XX:+UseParallelGC

启用并行垃圾回收器(适合多线程环境,提升吞吐量)。

-XX:+UseConcMarkSweepGC

启用并发标记清除垃圾回收器(CMS)。适用于对延迟敏感的应用。

-XX:+UseG1GC

启用 G1 垃圾回收器,适用于大堆内存和低延迟要求的应用。

-XX:MaxGCPauseMillis=
设置 G1 垃圾回收器的最大停顿时间,单位为毫秒。用于控制垃圾回收停顿的时间。

  1. 性能优化相关参数
    这些参数用于控制 JVM 性能优化策略。

-XX:+AggressiveOpts

启用一些潜在的性能优化(例如,启用 JIT 编译器的高级优化)。

-XX:CompileThreshold=

设置 JIT 编译器编译方法的调用次数阈值,超过此次数后将进行方法的即时编译。

-XX:+UseCompressedOops

启用压缩对象指针(Object Pointers)。对于 64 位 JVM,开启该选项可以节省内存。

-XX:MaxInlineLevel=

设置 JIT 编译器最大内联方法的深度,影响方法内联的优化。

  1. 调试与日志参数
    这些参数主要用于启用调试模式或记录 JVM 的运行日志。

-Xdebug

启用 JVM 调试。

-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

启用远程调试,address=5005 表示调试端口,suspend=n 表示不在启动时暂停。

-XX:+PrintGCDetails

打印垃圾回收的详细信息。

-XX:+PrintGCDateStamps

打印垃圾回收时的时间戳。

-XX:+PrintHeapAtGC

打印每次垃圾回收时堆内存的详细信息。

  1. JVM 其他常用参数
    -server
    启动服务器模式的 JVM,通常用于生产环境,优化了运行性能。

-client

启动客户端模式的 JVM,通常用于开发和测试环境,优化了启动时间。

-XX:+DisableExplicitGC

禁用 System.gc() 显式垃圾回收调用。

-XX:CICompilerCount=

设置 JIT 编译器的线程数。

  1. Java 版本相关参数
    -version
    输出当前 JVM 的版本信息。

-classpath 或 -cp
设置类路径。该参数指定 Java 程序查找类的路径。

-D=

设置 Java 系统属性。例如 -Dfile.encoding=UTF-8 设置文件编码为 UTF-8。

总结:

这些 JVM 启动参数允许开发人员根据应用程序的需求调整内存分配、垃圾回收策略、性能优化、调试选项等。适当的配置可以显著提高应用程序的性能和稳定性。

相关推荐
碎梦归途40 分钟前
23种设计模式-创建型模式之单例模式(Java版本)
java·开发语言·jvm·单例模式·设计模式
Eugene__Chen2 小时前
JVM详解(曼波脑图版)
jvm
小小深2 小时前
了解JVM
java·jvm
Sunlight_7773 小时前
第五章 SQLite数据库:1、SQLite 基础语法及使用案例
java·linux·服务器·jvm·数据库·tcp/ip·sqlite
Sunlight_7774 小时前
第五章 SQLite数据库:3、SQLite 常用语法及使用案例
jvm·数据库·sqlite
阿达King哥4 小时前
Java虚拟机(JVM)平台无关?相关?
java·jvm
SoFlu软件机器人7 小时前
JVM 调优不再难:AI 工具自动生成内存优化方案
jvm·测试工具·压力测试
Vesan,7 小时前
C++ static的使用方法及不同作用
java·jvm·c++
振鹏Dong16 小时前
JVM初探——走进类加载机制|三大特性 | 打破双亲委派SPI机制详解
jvm
qw9491 天前
JVM:程序计数器、虚拟机栈、本地方法栈
jvm