2014-10-29 52 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