如何确定各种Java8堆内存名?

如何确定各种Java8堆内存名?,java,java-8,heap-memory,Java,Java 8,Heap Memory,我想以编程方式确定Java堆内存名。当我运行下面的代码时,它为java堆内存提供了两个不同的名称,即使相同的java安装在两台不同的机器上 import java.lang.management.ManagementFactory; import java.lang.management.MemoryPoolMXBean; import java.lang.management.MemoryType; public class MemTest { public static void

我想以编程方式确定Java堆内存名。当我运行下面的代码时,它为java堆内存提供了两个不同的名称,即使相同的java安装在两台不同的机器上

import java.lang.management.ManagementFactory;
import java.lang.management.MemoryPoolMXBean;
import java.lang.management.MemoryType;

public class MemTest {
    public static void main(String[]args) {
        for (MemoryPoolMXBean mpBean : ManagementFactory.getMemoryPoolMXBeans()) {
            System.out.println(mpBean.getType());
            System.out.println(mpBean.getName());
        }
    }
}
机器1的输出

support@vrni-platform:~$ java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
support@vrni-platform:~$ vi MemTest.java
support@vrni-platform:~$ javac MemTest.java
support@vrni-platform:~$ java MemTest
Non-heap memory
Code Cache
Non-heap memory
Metaspace
Non-heap memory
Compressed Class Space
Heap memory
PS Eden Space
Heap memory
PS Survivor Space
Heap memory
PS Old Gen
java设置的输出

java -XshowSettings:vm -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=32773376 -XX:MaxHeapSize=524374016 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops
VM settings:
    Max. Heap Size (Estimated): 485.31M
    Ergonomics Machine Class: client
    Using VM: Java HotSpot(TM) 64-Bit Server VM

java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
java -XshowSettings:vm -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=262920896 -XX:MaxHeapSize=4206734336 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
VM settings:
    Max. Heap Size (Estimated): 3.48G
    Ergonomics Machine Class: server
    Using VM: Java HotSpot(TM) 64-Bit Server VM

java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
机器2的输出

support@vrni-platform:~$ java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
ubuntu@vrni-platform:~/logs/tsdb-server$ vim MemTest.java
ubuntu@vrni-platform:~/logs/tsdb-server$ javac MemTest.java
ubuntu@vrni-platform:~/logs/tsdb-server$ java MemTest
Non-heap memory
Code Cache
Non-heap memory
Metaspace
Non-heap memory
Compressed Class Space
Heap memory
Eden Space
Heap memory
Survivor Space
Heap memory
Tenured Gen
java设置的输出

java -XshowSettings:vm -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=32773376 -XX:MaxHeapSize=524374016 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops
VM settings:
    Max. Heap Size (Estimated): 485.31M
    Ergonomics Machine Class: client
    Using VM: Java HotSpot(TM) 64-Bit Server VM

java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
java -XshowSettings:vm -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=262920896 -XX:MaxHeapSize=4206734336 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
VM settings:
    Max. Heap Size (Estimated): 3.48G
    Ergonomics Machine Class: server
    Using VM: Java HotSpot(TM) 64-Bit Server VM

java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)

有人能告诉我为什么在环境相同的情况下(Ubuntu 14.04,Java版本相同),堆内存有两个不同的名称吗?堆内存的所有可能名称是什么?

堆内存区域是所用垃圾收集器的一个功能

机器之间的差异是由于机器1被分类为客户端机器,而机器2被分类为服务器机器。原因是可用内存的数量。分类差异导致选择不同的垃圾收集器(特别是机器1的串行收集器和机器2的并行收集器),这反过来又导致堆内存区域的差异


另请参见,特别是部分。

两台机器上的
java-XshowSettings:vm-XX:+PrintCommandLineFlags-version
的输出是什么?这两台机器之间有什么区别吗(如内存量、CPU核数等)?它们是不同的。更新了问题。