Я хочу программно определить имя памяти кучи 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)
Выход от машины 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=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)
Может кто-нибудь дать мне знать, почему это дает два разных имени для Heap Memory, когда среда одинакова (Ubuntu 14.04, Java-версия одинакова)? Каковы все возможные имена для Heap Memory
?