了解java堆

时间:2014-10-29 13:21:42

标签: 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或更好等等。

2 个答案:

答案 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:最大堆大小(以字节为单位)