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

相关推荐
ktkiko114 小时前
线性池学习
jvm·线程·线程池·进程
汝即来归5 小时前
如何实现对象的克隆?如何实现单例模式?
开发语言·javascript·jvm·c++
Qzer_4076 小时前
在JVM(Java虚拟机)中,PC寄存器(Program Counter Register)扮演着至关重要的角色,它是JVM执行引擎的核心组成部分之一。
java·开发语言·jvm
星沁城6 小时前
JVM的垃圾回收机制
java·开发语言·jvm
杨半仙儿还未成仙儿6 小时前
了解 JVM 运行原理,掌握常见的内存模型以及性能调优的基本方法
jvm
40岁的系统架构师6 小时前
9 OOM和JVM退出。OOM后JVM一定会退出吗?
jvm
Generalzy7 小时前
golang操作sqlite3加速本地结构化数据查询
jvm·golang·sqlite
歪桃7 小时前
JVM性能优化一:初识内存泄露-内存溢出-垃圾回收
jvm·性能优化
金士顿11 小时前
define ATL_NO_VTABLE __declspec(novtable)
java·jvm·c++