是 Java 虚拟机(JVM)的启动参数配置,通常用于设置 JVM 的内存管理和错误处理行为。下面逐项解释:
1. -Xms512m
含义:设置 JVM 初始堆内存(Initial Heap Size) 为 512MB。
作用:
JVM 启动时,会立即分配 512MB 的堆内存给应用程序。
避免 JVM 在运行过程中频繁调整堆内存大小,提高性能。
单位:
m 表示 MB(兆字节),g 表示 GB(千兆字节)。
例如:-Xms1g 表示初始堆内存 1GB。
2. -Xmx1024m
含义:设置 JVM 最大堆内存(Maximum Heap Size) 为 1024MB(1GB)。
作用:
JVM 运行时,堆内存最多可以扩展到 1GB。
如果应用程序需要更多内存,会抛出 OutOfMemoryError(OOM)错误。
单位:
同样支持 m(MB)和 g(GB),如 -Xmx2g 表示最大堆内存 2GB。
3. -XX:+HeapDumpOnOutOfMemoryError
含义:当 JVM 发生 内存溢出(OutOfMemoryError, OOM) 时,自动生成堆转储文件(Heap Dump)。
作用:
帮助开发者分析内存泄漏或内存使用过高的问题。
默认情况下,堆转储文件会生成在 JVM 的当前工作目录,文件名类似 java_pid.hprof。
扩展选项:
可以指定堆转储文件的路径,例如:
-XX:HeapDumpPath=/path/to/dump.hprof
这样可以控制堆转储文件的存储位置。
-Xms512m:JVM 启动时初始分配 512MB 堆内存。
-Xmx1024m:JVM 最多可以使用 1GB 堆内存。
-XX:+HeapDumpOnOutOfMemoryError:如果发生 OutOfMemoryError,自动 dump 堆内存快照,方便排查问题。
典型使用场景
这段配置通常用于:
Java 应用程序启动脚本(如 startup.sh 或 catalina.sh)。
容器化环境(如 Docker/Kubernetes 的 JAVA_OPTS 环境变量)。
性能调优:避免 JVM 频繁调整堆内存大小,提高稳定性。
故障排查:当应用因 OOM 崩溃时,自动生成堆转储文件供分析。
在 Shell 脚本中使用
#!/bin/bash
# 设置 JVM 参数
JVM_OPTS="-Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError"
# 启动 Java 应用
java $JVM_OPTS -jar your-application.jar
这样配置可以确保 JVM 在合理的范围内运行,并在内存溢出时提供调试信息。 🚀