设置-Xms参数有什么好处,例如,初始内存大于默认计算的内存(根据Java:http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.ergonomics.default_size,在我的例子中为64MB)?
另外,将初始内存和最大内存设置为相同大小有什么好处吗?
谢谢。
发布于 2010-03-28 16:50:30
好处是,当您使用足够多的堆时,会有性能损失,因此必须调整它的大小。如果您最初将其设置为64MB,但结果发现负载下的应用程序需要250MB,当您达到接近64MB时,JVM将分配更多的堆空间,并且可能会移动一些对象并进行其他记账。这当然需要时间。
当您的应用程序在负载下时,您希望所有资源都专门用于使其运行,因此这些额外的工作可能会使应用程序的响应速度变慢,甚至在某些情况下,如果在调整堆大小之前耗尽了内存,应用程序可能会崩溃。
有时,当使用Java应用程序时,你会看到类似“将Xms和Xmx设置为相同的值”这样的指令。这样做是为了避免完全重新调整大小,以便您的应用程序启动时其堆已经和将来一样大。
发布于 2010-03-28 16:51:02
链接的文章很清楚地解释了这一点:
默认值:-Xms 3670k -Xmx 64M...大型服务器应用程序通常会遇到这些缺省值的两个问题。一个是慢启动,因为初始堆很小,并且必须在许多主要集合中调整大小。一个更紧迫的问题是,对于大多数服务器应用程序来说,默认的最大堆大小太小了。服务器应用程序的经验法则是:
你也可以对问题的this discussion感兴趣。
发布于 2010-03-28 17:24:09
设置-Xms参数的好处是什么?例如,初始内存比默认计算的内存大
如果初始堆很小,并且必须在许多主要集合中调整大小,则启动将会很慢。
还有,将初始内存和最大内存设置为相同大小有什么好处吗?
将-Xms和-Xmx设置为相同的值可提供可预测性。当在性能调优期间调整JVM的大小时,这一点尤其重要。但是JVM将无法补偿任何糟糕的决策。
我倾向于对生产服务器使用相同的值(在性能测试期间调优)。
https://stackoverflow.com/questions/2532326
复制相似问题