什么是Java中的XMX和XMS参数

时间:2020-02-23 14:35:39  来源:igfitidea点击:

在本教程中,我们将在Java中看到XMS和XMX参数。

-XMX指定Java虚拟机(JVM)的最大内存大小,而-XMS指定初始内存大小。

它意味着JVM将以XMS存储量启动,并且JVM将能够使用JVM存储量的最大值。

让我们通过示例来理解这一点。

java -Xms512m -Xmx1024m

因此Java进程将从512 MB的内存堆开始,可以使用高达1024 MB的内存堆。

-XMX和-XMS可以以不同的尺寸定义,例如千字节,兆字节和千兆字节。

-xmx2048k -xmx1024m -xmx2g

如果Java进程超过-xmx内存大小,那么我们将java.lang.outofMemoryError。

默认初始大小在基于符合人体工程学算法上分配。

Read more: Garbage collection in java

-xms和-xmx是JVM的堆的选项,JVM可以使用更多的内存而不是分配给堆的大小。

如果我们想了解All -X选项,则可以使用Java -X命令。

apples-macbook-pro-5:~Apple $java-x -xbatch禁用后台编译-xbootclasspath/a:添加到Bootstrap类路径的结尾

-Xcheck:JNI对JNI函数执行另外的检查

-XCOMP部队在第一张调用时汇编方法

-xdebug提供了向后兼容性

-XDIAG显示其他诊断消息

-xfuture使能最严格的检查,预计将来默认

-Xint仅解释模式执行

-Xinternalversion显示比-version选项更详细的JVM版本信息

-xloggc:<文件>将gc状态记录到带时间戳的文件

-xmixed混合模式执行(默认)

-xmn <size>设置年轻一代(托儿所)的堆的初始和最大大小(以字节为单位)

-xms <size>设置初始Java堆大小

-xmx <size>设置最大Java堆大小

-xnoclassgc禁用类垃圾收集

-XRS通过Java/VM减少使用OS信号(请参阅文档)

-xShare:如果可能的话,自动使用共享类数据(默认)

-xshare:关不要尝试使用共享类数据

-xShare:在需要使用共享类数据时,否则失败。

-xshowsettings显示所有设置并继续

-xshowsettings:所有设置并继续

-xshowsettings:locale显示所有语言环境相关的设置并继续

-xshowsettings:属性显示所有属性设置并继续

-xshowsettings:VM显示所有VM相关设置并继续

-xshowsettings:System(仅限Linux)显示主机系统或者容器配置并继续

-xss <size>设置Java线程堆栈大小

-xverify设置字节码验证程序的模式

  • 读取<module> = <target-module>(,<target-module>)*更新<module>读取<target-module>,无论模块声明如何。
    <target-module>可以全命名才能读取所有未命名的模块。

-add-exports <module>/<package> = <target-module>(,<target-module>)*更新<module>将<package>导出到<target-module>,无论模块声明如何。
<target-module>可以全命名才能导出到所有未命名的模块。

-add-opens <module>/<package> = <target-module>(,<target-module>)*更新<module>打开<package>到<target-module>,无论模块声明如何。

-illegal-Access = <value>允许或者拒绝访问命名模块中的代码在命名模块中的类型中的类型。
<value>是"拒绝","permit","警告"或者"调试"此选项将在将来的版本中删除。

-limit-modules <module name> [,<模块名称> ...]限制可观察模块的Universe

-patch-module <module> = <file>(:<file>)*重写(overwriting)或者增强具有jar文件或者目录中的类和资源的模块。

-Disable- @文件禁用进一步的参数文件扩展

-source <version>在源文件模式下设置源的版本。

这些另外选择可能会有所变化,恕不另行通知。

以下选项是Mac OS X特定:-xstartonfirstthread在第一个(appkit)线程上运行main()方法

-xdock:name = <application name> override默认应用程序名称在Docker中显示

-xdock:icon = <图标文件的路径> override在Docker中显示的默认图标

-X选项是非标准的,需要更改,恕不另行通知。

请注意,正确设置-Xms和-Xmx参数非常重要。Java13在Z垃圾收集器中引入了一个新特性,它将取消向CPU提交内存,但在-Xms参数以下不会取消提交,因此如果将-Xms和-Xmx设置为相等,它将基本上禁用此特性。当内存占用是一个问题时,这个特性非常有用。