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

相关推荐
廋到被风吹走1 天前
【Java】【JVM】性能监控与故障诊断
java·开发语言·jvm
廋到被风吹走1 天前
【Java】【JVM】ClassLoader机制解析
java·开发语言·jvm
春日见1 天前
强化学习第一讲:强化学习是什么,强化学习分类
开发语言·jvm·人工智能·python·学习·matlab·强化学习
麦兜*1 天前
【SprintBoot】自定义 Spring Boot Starter 从入门到精通:封装企业级通用组件的最佳实践
java·jvm·spring boot·后端·spring·spring cloud·maven
廋到被风吹走2 天前
【Java】【JVM】即时编译解析:C1/C2、分层编译、OSR与日志分析
java·开发语言·jvm
网小鱼的学习笔记2 天前
面试题1:==和equals的比较
java·jvm·面试
廋到被风吹走2 天前
【Java】【JVM】垃圾回收深度解析:G1/ZGC/Shenandoah原理、日志分析与STW优化
java·开发语言·jvm
YanDDDeat2 天前
【JVM】类初始化和加载
java·开发语言·jvm·后端
廋到被风吹走2 天前
【Java】【JVM】内存模型
java·开发语言·jvm
独自破碎E2 天前
整理一些可用来分析JVM性能的工具
jvm