为了确定java堆大小,我使用了以下命令:
java -XX:+PrintFlagsFinal -version -h | grep HeapSize
uintx ErgoHeapSizeLimit = 0 {product}
uintx HeapSizePerGCThread = 87241520 {product}
uintx InitialHeapSize := 1586475520 {product}
uintx LargePageHeapSizeThreshold = 134217728 {product}
uintx MaxHeapSize := 25383927808 {product}
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
但是,我无法理解ErgoHeapSizeLimit,HeapSizePerGCThread,InitialHeapSize,LargePageHeapSizeThreshold,MaxHeapSize等的含义。有人可以简要解释一下这些术语。其实我是java的完全新手
实际上我需要确定我的机器可以分配给进程的堆大小?因为我的一个应用程序需要以下参数:-server,-Xmx16G或更好等等。
答案 0 :(得分:6)
看看这里(它们是从OpenJDK中提取的):
http://jvm-options.tech.xebia.fr/
<强> ErgoHeapSizeLimit:强> 最符合人体工程学设置的堆大小(以字节为单位);零表示使用MaxRAM / MaxRAMFraction
<强> HeapSizePerGCThread:强> 在计算GC线程数时使用的每个GC线程的堆大小(字节数)
<强> InitialHeapSize:强> 初始堆大小(以字节为单位);零表示OldSize + NewSize
<强> LargePageHeapSizeThreshold:强> 如果max heap至少是这么大的话,请使用大页面
<强> MaxHeapSize:强> 最大堆大小(以字节为单位)
答案 1 :(得分:0)
此处记录了所有变量http://techupdates.com/go/884599
默认为0的ErgoHeapSizeLimit意味着忽略它。如果它小于MaxRAM / MaxRAMFraction(分数),则使用此限制;零表示使用MaxRAM / MaxRAMFraction [来源。 Java性能:权威指南(Scott Oaks,2014)]
HeapSizePerGCThread:计算GC线程数时每个GC线程的堆大小(字节数)
InitialHeapSize:初始堆大小(以字节为单位);零表示OldSize + NewSize
LargePageHeapSizeThreshold:如果max heap至少这么大,请使用大页面
MaxHeapSize:最大堆大小(以字节为单位)