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 性能调优和行为控制

相关推荐
一定要AK1 小时前
Spring 入门核心笔记
java·笔记·spring
A__tao2 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
KevinCyao2 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
lly2024062 小时前
C 标准库 - `<stdio.h>`
开发语言
沫璃染墨2 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
jwn9992 小时前
Laravel6.x核心特性全解析
开发语言·php·laravel
迷藏4942 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
彧翎Pro2 小时前
基于 RO1 noetic 配置 robosense Helios 32(速腾) & xsense mti 300
前端·jvm
功德+n2 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
明日清晨2 小时前
python扫码登录dy
开发语言·python