面试题:常用的 JVM 配置参数有哪些?

JVM(Java虚拟机)提供了丰富的配置参数,用于调整其运行时行为以优化性能或解决特定问题。以下是一些常用的JVM配置参数:

堆内存设置

  • -Xms<size>:设置JVM启动时的初始堆大小。
  • -Xmx<size>:设置JVM允许的最大堆大小。
  • -Xmn<size>:设置年轻代(Young Generation)的大小。

垃圾回收(GC)相关

  • -XX:+UseSerialGC:选择串行垃圾收集器。
  • -XX:+UseParallelGC:选择并行垃圾收集器(吞吐量优先)。
  • -XX:+UseConcMarkSweepGC:选择CMS(Concurrent Mark Sweep)垃圾收集器(低延迟优先)。
  • -XX:+UseG1GC:选择G1(Garbage First)垃圾收集器。
  • -XX:MaxGCPauseMillis=<value>:设置目标最大GC暂停时间(仅适用于G1等支持该参数的收集器)。

其他常用参数

  • -XX:PermSize=<size>-XX:MaxPermSize=<size>:设定永久代(Permanent Generation)的初始大小和最大大小(对于使用永久代的旧版本JVM)。注意,在Java 8及之后版本中,永久代被元空间(Metaspace)取代,相应地应使用-XX:MetaspaceSize=<size>-XX:MaxMetaspaceSize=<size>
  • -XX:+HeapDumpOnOutOfMemoryError:当发生OutOfMemoryError时自动生成堆转储文件。
  • -XX:HeapDumpPath=<path>:指定生成堆转储文件的位置。
  • -XX:+PrintGCDetails:打印详细的GC日志信息。
  • -XX:+PrintGCTimeStamps:在GC日志中添加时间戳。
  • -Xlog:gc*:从Java 9开始使用的新式GC日志记录方式,可以更灵活地控制输出格式和内容。

调试与诊断

  • -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<port>:启用远程调试支持,通过JDWP协议连接调试器。
  • -XX:+UnlockDiagnosticVMOptions:解锁实验性或诊断选项,以便使用其他一些需要解锁的标志。
  • -XX:+HeapDumpOnCtrlBreak:当按下Ctrl+Break键时生成堆转储文件(Windows环境下)或发送SIGQUIT信号(Unix/Linux环境下)。

这些参数可以根据具体的应用需求进行调整,以优化应用的性能、稳定性和资源利用率。值得注意的是,随着JVM版本的不同,某些参数可能有所变化或者被新的参数所替代,因此建议查阅对应JVM版本的官方文档获取最新信息。

THE END
喜欢就支持一下吧
点赞6 分享