2014-10-29 55 views
0

为了确定Java堆大小我用下面的命令:了解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

你为什么不只是使用'-Xmx16G'?甚至是'-Xmx25G',因为这是您可以分配的最大堆大小... – 2014-10-29 13:34:39

回答

4

这里看一看(它们是从OpenJDK的提取):

http://jvm-options.tech.xebia.fr/

ErgoHeapSizeLimit: 最大符合人体工程学的集堆大小(以字节为单位);零种手段使用maxram的/ MaxRAMFraction

HeapSizePerGCThread: 每计算GC线程数

InitialHeapSize使用GC堆的线程(字节)的大小: 初始堆大小(以字节为单位);零表示OldSize +新尺寸

LargePageHeapSizeThreshold:如果 使用大页面的最大堆至少是这个大

MaxHeapSize: 最大堆大小(以字节为单位)

0

所有的变量都记录这里http://techupdates.com/go/884599

  • ErgoHeapSizeLimit that defaul ts到0意味着忽略它。如果此限制小于MaxRAM/MaxRAMFraction(分数),则使用此限制;零意味着使用MaxRAM/MaxRAMFraction [来源。 Java性能:权威指南(斯科特奥克斯,2014)]

  • HeapSizePerGCThread:每次在计算GC线程

  • InitialHeapSize的数量使用GC线程堆(字节)的大小:初始堆大小(以字节为单位);零表示OldSize +新尺寸

  • LargePageHeapSizeThreshold:使用大页面,如果最大堆至少是这个大

  • MaxHeapSize:最大堆大小(以字节为单位)

+0

http://jvm-options.tech.xebia.fr/是http://techupdates.com/go/884599的更新。你的回答实际上是我的副本。 – 2014-10-29 19:49:06