-Xmn JVM选项代表什么?

67

我试图在互联网上搜索-Xmn选项,但没有成功。

请问有人能够解释这个选项是什么意思,以及如何使用它来调优JVM吗?


1
应该是 -Xms,不是吗? - Abimaran Kugathasan
14
有一个“-Xmn”标志,它与“-Xms”不同。 - awksp
3个回答

77

这里

-Xmn:年轻代堆大小。

年轻代指生命短暂的所有对象。年轻代对象位于堆的特定位置,垃圾回收器经常会经过此处。所有新对象都在年轻代区域(称为"eden")中创建。当一个对象经过2-3次垃圾回收后仍然存活,则它将被交换到"老年代":它们是"幸存者"。

来自IBM的更多“官方”资料:

-Xmn

当使用-Xgcpolicy:gencon时,将新(保育)堆的初始和最大大小设置为指定值。相当于同时设置-Xmns和-Xmnx。如果设置了-Xmns或-Xmnx,则不能设置-Xmn。如果尝试使用-Xmns或-Xmnx设置-Xmn,则VM将无法启动,并返回错误。默认情况下,内部根据系统的能力选择-Xmn。您可以使用-verbose:sizes选项查找VM当前正在使用的值。


4
第一来源是错误的。它只是年轻一代的大小,而不仅仅是伊甸园(伊甸园只是年轻一代的一部分)。 - Piotr Idzikowski
2
@piotrek 我相信你说的。谢谢! - awksp

13

来自Oracle的GC性能调优培训文档:

-Xmn[大小]: 年轻代堆空间的大小。

强调性能的应用程序倾向于使用-Xmn调整年轻代的大小,因为它结合了-XX:MaxNewSize和-XX:NewSize的使用,并几乎总是将-XX:PermSize和-XX:MaxPermSize明确设置为相同的值。

简而言之,它将新生代NewSizeMaxNewSize值设置为相同的值。


5
-Xmn:年轻代堆大小。年轻代代表寿命短的所有对象。年轻代对象位于堆的特定位置,垃圾收集器会经常通过这里。所有新对象都在年轻代区域(称为“伊甸园”)创建。当一个对象在2-3个gc清理后仍然“存活”,那么它将被交换到“老年代”:它们是“幸存者”。建议大小为33%。 来源

4
链接已经失效。这是Wayback Machine对该链接的归档:https://web.archive.org/web/20140613034154/http://www.avricot.com/blog/?post/2010/05/03/Get-started-with-java-JVM-memory-(heap%2C-stack%2C-xss-xms-xmx-xmn...) - Hetul Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接