当前位置: 首页 > 面试题库 >

-Xms和-Xmx标志是否保留机器的资源?

司寇飞航
2023-03-14
问题内容

我知道-XmsJVM进程的标志是允许JVM进程使用特定数量的内存来初始化其进程。而对于Java应用程序的性能,通常建议设置为两个相同的价值观-Xms-Xmx启动应用程序时,喜欢-Xms2048M -Xmx2048M

我很好奇,-Xmsand -Xmx标志是否意味着JVM进程保留了特定内存量,以防止同一台计算机上的其他进程使用它。

这是正确的吗?


问题答案:

Xmx仅保留虚拟地址空间。 Xms实际上分配(提交)它,但不一定要对其进行故障修复。

操作系统对分配的响应方式各不相同。

Windows确实允许您保留很大的地址空间(Xmx),但不允许过量使用(Xms)。该限制由交换+物理定义。大页面是例外(需要使用组策略设置来启用它),这将受到物理内存的限制。

Linux行为更为复杂,它取决于vm.overcommit_memory和相关的sysctls以及传递给mmap
syscall的各种标志,这些标志在某种程度上可以由JVM配置标志控制。行为的范围可以是:a)Xms可能超过总RAM
+交换到b)Xmx受可用物理RAM限制。



 类似资料:
  • 问题内容: 我正在Kubernetes中运行一个容器化的Java应用程序。 为了使jvm保留根据容器规范的内存,必须设置标志。 如果这两个标志与Xms和Xmx标志一起设置,那么jvm的行为是什么?一个标志会覆盖另一个标志吗? 例如,如果我们 在一个容器中的容器中将请求限制为4Gi,将响应限制为4Gi,则在具有128Gi内存的主机中,JVM将保留多少内存? 问题答案: -Xmx标志将覆盖-XX:+

  • 我有一个Java微服务,它在生产中的内存每天都在增加,我刚刚继承了它。它目前使用了一个4GB堆的80%,并且每天增加几个百分点。 JVM选项中的-xms和-xmx值都设置为4GB。 这是否意味着垃圾收集器在JVM达到其堆限制之前不会激活?

  • 问题内容: 现在,我在ini文件中对这些设置是: -Xms768M -Xmx1024M 当将它们设置得更高时,eclipse就不会再开始了……有没有办法增加这些值而又不会使eclipse崩溃? 问题答案: 最大值不取决于Eclipse,而是取决于您的OS(显然取决于可用的物理内存)。 您可能想看一下这个问题:Windows中每个Java进程的最大内存量?

  • 我编写的java应用程序遇到了一个问题,导致硬件性能问题。问题(我很确定)是,我运行应用程序的一些机器只有1GB的内存。当我启动java应用程序时,我将堆大小设置为-xms512m-xmx1024m。 我的第一个问题是,我的假设是否正确,因为我将机器的所有内存分配给java堆,这显然会导致性能问题?

  • 我有以下代码: 您可以看到每个操作分配5M。当我设置时,它无一例外地成功运行,而当时,它会引发异常。有人能解释一下为什么吗?我在Windows 7、64bit、Eclipse 4.3下。以下代码是相同的结果:

  • 问题内容: 请说明JVM 中Xms和Xmx参数的使用。它们的默认值是多少? 问题答案: 该标志指定Java虚拟机(JVM)的最大内存分配池,而Xms指定初始内存分配池。 这意味着你的JVM将以一定数量的内存启动,并且将能够使用最大数量的内存。例如,启动如下所示的JVM将以256 MB的内存启动它,并将允许该进程使用最多2048 MB的内存: 也可以以不同的大小(例如千字节,兆字节等)指定内存标志。