常用的JVM启动参数有哪些?

大家好,我是锋哥。今天分享关于【常用的JVM启动参数有哪些?】面试题。希望对大家有帮助;

常用的JVM启动参数有哪些?

1000道 互联网大厂Java工程师 精选面试题-Java资源分享网

JVM 启动参数是启动 Java 应用程序时用于控制 Java 虚拟机行为的命令行选项。这些参数通常用来设置 JVM 的内存大小、垃圾回收器、调试选项等。常用的 JVM 启动参数分为两大类:标准选项非标准选项。下面是一些常用的 JVM 启动参数。

一、标准选项

  1. 内存设置相关参数

    • -Xms<size>:设置 JVM 启动时堆的初始大小。<size> 可以是 KB、MB、GB 等单位(如 -Xms512m)。
    • -Xmx<size>:设置 JVM 最大堆大小。<size> 同样可以是 KB、MB、GB 等单位(如 -Xmx1024m)。
    • -Xmn<size>:设置新生代大小。新生代包含年轻代(Young Generation)和旧生代(Old Generation),这个参数控制新生代的大小(如 -Xmn256m)。
  2. 垃圾回收器相关参数

    • -XX:+UseSerialGC:使用串行垃圾回收器,这是一种基于单线程的垃圾回收器,适用于小型应用。
    • -XX:+UseParallelGC:使用并行垃圾回收器,这种垃圾回收器适用于多核 CPU 和多线程的环境。
    • -XX:+UseConcMarkSweepGC:使用并发标记-清除(CMS)垃圾回收器,适用于低停顿的应用。
    • -XX:+UseG1GC:启用 G1 垃圾回收器,它是一种低延迟、高吞吐量的垃圾回收器,适用于大内存应用。
    • -XX:SurvivorRatio=<ratio>:设置年轻代中 Eden 区和 Survivor 区的大小比例。比如 -XX:SurvivorRatio=8 表示 Eden 区大小为 Survivor 区的 8 倍。
  3. JVM 调试和诊断相关参数

    • -Xdebug:启用 JVM 的调试模式。
    • -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005:启用 JDWP(Java Debug Wire Protocol),用于远程调试,address=5005 是调试端口号,suspend=n 表示不暂停应用程序启动,server=y 表示启动调试服务端。
    • -XX:+PrintGCDetails:打印垃圾回收的详细信息。
    • -XX:+PrintGCDateStamps:打印垃圾回收的时间戳。
  4. JVM 性能调优参数

    • -XX:+AggressiveOpts:启用一些未正式发布的优化选项,可以提高应用程序的性能。
    • -XX:+UseCompressedOops:启用指针压缩,用于在 64 位 JVM 中减少对象的内存占用,通常用于 32 位指针的优化。
    • -XX:MaxMetaspaceSize=<size>:设置元空间(Metaspace)的最大大小,元空间用于存放类的元数据。默认情况下,JVM 会自动调整它的大小,使用该参数可以限制其最大值。
  5. 类加载器相关参数

    • -classpath 或 -cp:指定类路径。该参数用于指定 JVM 在启动时查找类文件的路径,可以包含 JAR 文件或目录(如 -cp /path/to/classes:/path/to/libs/*)。
    • -D<name>=<value>:定义系统属性,用于设置应用程序的配置参数。例如 -Duser.timezone=GMT 用于设置时区。
  6. JVM 进程控制参数

    • -Xrs:减少操作系统对 JVM 的控制,通常用于避免对 JVM 的线程调度干扰。它可以减少 JVM 与操作系统之间的信号交互。
    • -XX:+ExitOnOutOfMemoryError:在发生内存溢出时,JVM 会立即退出程序。

二、非标准选项

这些选项不一定会在所有版本的 JVM 中有效,因为它们属于 JVM 的实现特性,可能在不同版本之间有所变化。

  1. JVM 内存管理

    • -XX:InitialHeapSize=<size>:设置 JVM 堆内存的初始大小,默认由 -Xms 控制。
    • -XX:MaxHeapFreeRatio=<percentage>:设置最大空闲堆内存的比例,JVM 会在堆内存使用量大于该值时进行堆扩展。
    • -XX:MinHeapFreeRatio=<percentage>:设置最小空闲堆内存的比例。
  2. 垃圾回收调优

    • -XX:ParallelGCThreads=<count>:设置垃圾回收时使用的并行线程数,默认情况下该参数会根据 CPU 核心数进行设置。
    • -XX:ConcGCThreads=<count>:设置 CMS 垃圾回收器使用的并发线程数。
    • -XX:MaxTenuringThreshold=<threshold>:设置对象从年轻代晋升到老年代的年龄阈值,默认值通常为 15。
  3. JVM 启动优化

    • -XX:+UseStringDeduplication:启用字符串去重,在内存中避免创建多个相同的字符串对象。
    • -XX:+OptimizeStringConcat:优化字符串连接操作,通过减少内存分配来提高性能。
  4. JVM 特性控制

    • -XX:+UnlockDiagnosticVMOptions:启用一些诊断选项。
    • -XX:+DisableExplicitGC:禁用 System.gc() 的显式垃圾回收调用,防止应用程序手动触发垃圾回收。
  5. JVM 输出控制

    • -XX:+PrintFlagsFinal:打印 JVM 参数及其当前值。
    • -XX:+PrintCompilation:打印 JIT 编译信息。

三、JVM 版本相关的参数

有些参数和选项与特定版本的 JVM 相关。比如:

  • -XX:+UseZGC:启用 ZGC(Z Garbage Collector),是 JDK 15 之后的一个低延迟垃圾回收器。
  • -XX:+UseShenandoahGC:启用 Shenandoah 垃圾回收器(JDK 12 及以后的版本)。
  • -XX:TieredStopAtLevel:设置 JIT 编译的停止级别。

四、总结

JVM 启动参数可以用来优化和调节 Java 程序的运行环境,开发者可以根据实际需求选择合适的参数来提升应用的性能、稳定性以及调试和监控能力。常用的参数通常涉及内存、垃圾回收、调试、性能优化等方面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值