了解java堆

use*_*749 2 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)
Run Code Online (Sandbox Code Playgroud)

但是,我无法理解ErgoHeapSizeLimit,HeapSizePerGCThread,InitialHeapSize,LargePageHeapSizeThreshold,MaxHeapSize等的含义.有人可以简要解释这些术语.其实我是java的新手

实际上我需要确定我的机器可以分配给进程的堆大小?因为我的一个应用程序需要以下参数:-server,-Xmx16G或更好等等.

Pie*_*ard 6

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

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

ErgoHeapSizeLimit: 符合人体工程学设置的最大堆大小(以字节为单位); 零表示使用MaxRAM/MaxRAMFraction

HeapSizePerGCThread: 计算GC线程数时使用的每个GC线程的堆大小(字节)

InitialHeapSize: 初始堆大小(以字节为单位); 零表示OldSize + NewSize

LargePageHeapSizeThreshold: 如果最大堆至少这么大,则使用大页面

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