首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -Xms初始大小效果

Java -Xms初始大小效果
EN

Stack Overflow用户
提问于 2010-03-28 16:41:15
回答 4查看 54.9K关注 0票数 28

设置-Xms参数有什么好处,例如,初始内存大于默认计算的内存(根据Java:http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.ergonomics.default_size,在我的例子中为64MB)?

另外,将初始内存和最大内存设置为相同大小有什么好处吗?

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-28 16:50:30

好处是,当您使用足够多的堆时,会有性能损失,因此必须调整它的大小。如果您最初将其设置为64MB,但结果发现负载下的应用程序需要250MB,当您达到接近64MB时,JVM将分配更多的堆空间,并且可能会移动一些对象并进行其他记账。这当然需要时间。

当您的应用程序在负载下时,您希望所有资源都专门用于使其运行,因此这些额外的工作可能会使应用程序的响应速度变慢,甚至在某些情况下,如果在调整堆大小之前耗尽了内存,应用程序可能会崩溃。

有时,当使用Java应用程序时,你会看到类似“将XmsXmx设置为相同的值”这样的指令。这样做是为了避免完全重新调整大小,以便您的应用程序启动时其堆已经和将来一样大。

票数 32
EN

Stack Overflow用户

发布于 2010-03-28 16:51:02

链接的文章很清楚地解释了这一点:

默认值:-Xms 3670k -Xmx 64M...大型服务器应用程序通常会遇到这些缺省值的两个问题。一个是慢启动,因为初始堆很小,并且必须在许多主要集合中调整大小。一个更紧迫的问题是,对于大多数服务器应用程序来说,默认的最大堆大小太小了。服务器应用程序的经验法则是:

  1. 除非您在暂停时遇到问题,否则请尝试向虚拟机授予尽可能多的内存。默认大小(64MB)通常太小。
  2. 通过从虚拟机中删除最重要的调整决策,将-Xms和-Xmx设置为相同的值,从而提高了可预测性。但是,如果您做出了糟糕的选择,虚拟机将无法进行补偿。
  3. 由于分配可以并行化,因此通常会随着处理器数量的增加而增加内存。

你也可以对问题的this discussion感兴趣。

票数 6
EN

Stack Overflow用户

发布于 2010-03-28 17:24:09

设置-Xms参数的好处是什么?例如,初始内存比默认计算的内存大

如果初始堆很小,并且必须在许多主要集合中调整大小,则启动将会很慢。

还有,将初始内存和最大内存设置为相同大小有什么好处吗?

-Xms-Xmx设置为相同的值可提供可预测性。当在性能调优期间调整JVM的大小时,这一点尤其重要。但是JVM将无法补偿任何糟糕的决策。

我倾向于对生产服务器使用相同的值(在性能测试期间调优)。

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

https://stackoverflow.com/questions/2532326

复制
相关文章

相似问题

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