Java 启动服务时指定JVM(Java 虚拟机)的参数配置说明

示例:java -jar -Xms1024m -Xmx1024m -Duser.timezone=Asia/Shanghai -Dfile.encoding=utf-8 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heapdump.hprof

-Xms1024m

设置 JVM 启动时的初始堆内存大小为 1024MB。这是 JVM 启动时分配给堆内存的初始值,避免每次垃圾回收后都重新分配内存。

-Xmx1024m

设置 JVM 堆内存的最大值为 1024MB。当应用程序需要更多内存时,JVM 可以将堆内存扩展到这个最大值。

-Duser.timezone=Asia/Shanghai

设置 Java 程序的默认时区为上海时区。这对于处理日期和时间相关的操作非常重要,确保程序在不同地区运行时时间显示正确。

-Dfile.encoding=utf-8

设置文件编码为 UTF-8。这确保了程序在读取和写入文件时使用统一的字符编码,避免中文乱码等问题。

-XX:+HeapDumpOnOutOfMemoryError

启用堆内存溢出时生成堆转储文件(heap dump)。当 JVM 发生 OutOfMemoryError 时,会自动创建一个 heapdump.hprof 文件,便于后续分析内存泄漏问题。

-XX:HeapDumpPath=heapdump.hprof

指定堆转储文件的生成路径和文件名。在发生内存溢出时,JVM 会将堆内存的快照保存到指定路径下的 heapdump.hprof 文件中。

这些参数共同作用,确保 Java 应用程序在启动时具有合适的内存配置、正确的时区和编码设置,并在出现内存问题时能够生成调试信息。

‌-D 参数‌:

用于设置系统属性。你可以通过 System.getProperty() 方法在 Java 程序中获取这些属性的值。

例如:-Duser.timezone=Asia/Shanghai 设置了时区属性。

‌-X 参数‌:

这是非标准的 JVM 选项,用于设置一些 JVM 的特定行为,通常用于调整 JVM 的运行时参数。

例如:-Xms1024m 设置初始堆内存大小,-Xmx1024m 设置最大堆内存大小。

‌-XX 参数‌:

这是高级选项,用于更深入地控制 JVM 的行为和性能。这些选项通常用于开发或调试阶段,可能需要特定的系统权限,并且在不同 JVM 实现中可能不完全一致。

例如:-XX:+HeapDumpOnOutOfMemoryError 启用内存溢出时生成堆转储文件,-XX:HeapDumpPath=heapdump.hprof 指定堆转储文件的路径。

简单来说:

‌-D‌ 用于设置系统属性

‌-X‌ 用于设置 JVM 运行时参数,如内存大小

‌-XX‌ 用于高级 JVM 性能调优和行为控制

相关推荐
二哈赛车手5 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
为何创造硅基生物6 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
吃好睡好便好6 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
栗子~~6 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
星寂樱易李6 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
YDS8296 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现
java·ai·springboot·agent·rag·deepseek
仰泳之鹅6 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
之歆6 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
未若君雅裁7 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
cen__y7 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git