news 2026/6/10 17:38:53

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 性能调优和行为控制

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 15:42:21

教育行业,PHP如何编写网页大文件上传的开源示例?

大文件上传系统开发指南(PHP原生JS) 项目概述 兄弟,你这需求可真够硬的!20G文件上传、文件夹层级保留、全浏览器兼容、加密传输存储、断点续传…这活儿不轻松啊!不过既然你找到我了,咱们就一起啃下这块硬…

作者头像 李华
网站建设 2026/6/10 12:35:21

用AI生成测试数据分布:让测试更贴近真实用户行为

构建高保真测试环境的技术实践 引言:测试数据的真实性困境 在传统软件测试中,数据制备消耗30%以上测试周期(ISTQ 2025行业报告),而失真数据导致的漏测率高达42%。本文通过AI数据生成技术,系统性解决数据分…

作者头像 李华
网站建设 2026/6/10 12:35:00

2026必备!专科生毕业论文痛点TOP8 AI论文平台测评

2026必备!专科生毕业论文痛点TOP8 AI论文平台测评 2026年专科生论文写作新选择:AI平台测评解析 随着高校教育不断深化,专科生在毕业论文写作过程中面临的问题日益凸显。从选题困难、资料查找繁琐,到格式规范不熟悉、语言表达不流畅…

作者头像 李华
网站建设 2026/6/10 12:35:14

MyBatis-Plus 中 update 和 updateById 的区别

在 MyBatis-Plus 中,update 和 updateById 都是用于更新数据的方法,但它们的用途和行为有显著区别:1. updateById 方法java// 根据 ID 更新实体 boolean updateById(T entity);特点:根据主键 ID 进行更新实体对象必须包含主键值只…

作者头像 李华
网站建设 2026/6/10 14:04:04

【异常】数据库“隐形”字符大揭秘:Navicat 中如何发现并批量清除换行符与制表符

在日常的 Java 开发与数据库维护中,我们经常遇到这样的场景:前端页面展示的数据格式乱了,或者在进行数据迁移、Excel 导出时,发现某些文本字段里混入了大量的“隐形炸弹”——看不见的换行符和制表符。 本文将复盘一次真实的数据清洗过程,教你如何在 Navicat 中让这些特殊…

作者头像 李华
网站建设 2026/6/10 14:58:04

新手怎么安全清理C盘,不损坏系统和重要数据?

theme: default themeName: 默认主题清理c盘对于电脑新手来说可能像走雷区一样,一个错误的操作就可能删除重要文件甚至损坏windows系统,本指南将展示安全简单的方法来释放空间,同时不危及你的文件或电脑稳定性,我们将重点介绍windows内置的工具和清晰的步骤,这些步骤不会触及你…

作者头像 李华