java - 开始为 JVM 分配内存

标签 java jvm jvm-arguments

我开始在 java 命令上使用 -Xmx 选项,以允许我的进程使用更多的内存(256Mb,尽管我认为我目前使用少于 128Mb)。我还注意到用于启动内存的 -Xms 选项,默认值为 2Mb。我应该将此值设置为多少以及为什么?

<小时/>

Reference: Java

最佳答案

-Xmx 参数定义 JVM 堆可以达到的最大内存大小。您必须充分了解您的程序并了解它在负载下的表现并相应地设置此参数。如果程序的堆内存达到最大堆大小,较低的值可能会导致 OutOfMemoryException 或性能非常差。如果您的程序运行在专用服务器上,则可以将此参数设置得更高,因为它不会影响其他程序。

-Xms 参数设置 JVM 的初始和最小堆内存大小。这意味着当您启动程序时,JVM 将立即分配此内存量。如果您的程序从一开始就消耗大量堆内存,那么这非常有用。这避免了 JVM 需要定期增加堆大小,因此您可以获得一些性能。如果您不知道此参数是否对您有帮助,请不要使用它。

对于像 Resin 这样的服务器端 Java 应用程序来说,将最小 -Xms 和最大 -Xmx 堆大小设置为相同的值是一种很好的做法。 您可以设置为 256 或 512Mb。

关于java - 开始为 JVM 分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2739539/

相关文章:

java - 测量 GC 暂停时间的最佳方法是什么?

spring-boot - Apache 点燃: Possible too long JVM pause: 714 milliseconds

scala - 为使用 sbt-native-packager 创建的可执行文件设置 JVM 选项的推荐方法是什么?

Java Flight Recorder 命令参数以启用对象统计信息的收集

java - Android:让计时器在 Activity 之间运行

java - 拒绝执行异常

Java:<init> 和 <clinit> 有什么区别?

java - 我如何确定 Hotspot JVM 决定重新编译 JIT :ed code a second time? 的原因

java - 从枚举类型和序号中获取枚举值

java - PostgreSQL JDBC getGeneratedKeys 返回所有列