java - 启动JVM时的-Xms和-Xmx参数是什么?

标签 java memory-management parameters jvm

请解释 JVM 中 XmsXmx 参数的使用。它们的默认值是多少?

最佳答案

标志Xmx指定Java虚拟机(JVM)的最大内存分配池,而Xms指定初始内存分配池。

这意味着您的 JVM 将以 Xms 量的内存启动,并且最多能够使用 Xmx 量的内存。例如,如下启动 JVM 将以 256 MB 内存启动,并允许进程使用最多 2048 MB 内存:

java -Xms256m -Xmx2048m

内存标志还可以指定不同的大小,例如千字节、兆字节等。

-Xmx1024k
-Xmx512m
-Xmx8g

Xms 标志没有默认值,而 Xmx 通常具有 256 MB 的默认值。这些标志的常见用途是当您遇到 java.lang.OutOfMemoryError 时。

使用这些设置时,请记住这些设置适用于 JVM 的,并且 JVM 可以并且将会使用比分配给堆的大小更多的内存。来自 Oracle's documentation :

Note that the JVM uses more memory than just the heap. For example Java methods, thread stacks and native handles are allocated in memory separate from the heap, as well as JVM internal data structures.

关于java - 启动JVM时的-Xms和-Xmx参数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57627067/

相关文章:

.net - MonoTouch 和 IDisposable 模式

sql - 数据类型 varchar 和 varbinary(max) 在 add 运算符中不兼容

java - 奇数求和不起作用

java - 静电不好吗?如何删除静态变量?

C、在结构体中设置变量

c++ - 参数既是指针又是引用?

java - 在java中将函数作为参数传递

java - 变量相乘时的错误答案

java - 在 spring-boot :run 期间启动 MockServer

ios - 当 ARC 在 iOS 中出现时,我们是否还需要使用 xcode 工具(Allocations 和 Leak)?