首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为java堆空间设置较低的Xmx有什么好处?

为java堆空间设置较低的Xmx有什么好处?
EN

Stack Overflow用户
提问于 2013-06-14 13:03:43
回答 4查看 3.8K关注 0票数 1

我们可以使用-Xmx为我们的java虚拟机设置java堆空间的最大可能内存,例如。-Xmx1g。

如果优先级是不会出现java OutOfMemoryError堆空间,为什么要将-Xmx设置为低于某个值?如果最大值较低,虚拟机是否会更有效地管理内存?

我经常遇到OutOfMemoryError,并且我将-Xmx设置得非常高。问题是,最终我也耗尽了物理内存-因此仅有高Xmx是不够的。我目前的解决方案是关闭我的内存匮乏的应用程序,这是非常不方便的,因为它减慢了开发和测试。

EN

回答 4

Stack Overflow用户

发布于 2013-06-14 13:10:10

我的主要原因是确保JVM内存使用量适合可用RAM。假设我有3个tomcat实例在8g内存的机器上运行。对于每个虚拟机,我可能会将mX设置为2g左右,而对于os和其他虚拟机,我可能会设置为2g。

如果强制JVM进行交换,那么当垃圾收集器在对象树中导航时,可能会产生巨大的性能问题。

票数 2
EN

Stack Overflow用户

发布于 2013-06-14 13:06:32

我相信如果内存更大,那么需要GC的频率就会更低,而且会有很多垃圾,因为GC可以轻松地拥有这么大的空间。然而,GC必须占用更多的内存,这反过来可能会使GC变慢。

JVM堆大小决定了VM收集垃圾的频率和时间。垃圾收集的可接受速率是特定于应用程序的,应该在分析垃圾收集的实际时间和频率之后进行调整。如果设置了较大的堆大小,则完全垃圾回收会较慢,但发生的频率较低。如果根据内存需求设置堆大小,则完全垃圾回收速度更快,但发生的频率更高。

票数 0
EN

Stack Overflow用户

发布于 2013-06-14 13:09:45

不需要将-XMX-Parameter设置为低。只需将其设置为应用程序所需的值即可。但需要注意的是,使用较高的XMX值时,GC时间将会增加,因此您的应用程序可能不会响应(取决于您使用的收集器)。从个人经验来看,1G并不是很高。我有4G、8G或16G的JVM,它们运行得很好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17101406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档