为什么GarbageCollectorMXBean / MemoryPoolMXBean在相同环境下返回不同的值

时间:2018-10-16 09:50:48

标签: java amazon-ec2 jvm

我注意到GarbageCollectorMXBean#getName()MemoryPoolMXBean#getName()在两个服务器之间返回不同的值。

我试图运行显示豆名称的简单代码,如下所示。

ManagementFactory.getGarbageCollectorMXBeans().forEach(b ->
    System.out.println(b.getName()));

ManagementFactory.getMemoryPoolMXBeans().forEach(b ->
    System.out.println(b.getName()));

结果在下面。

服务器1

EC2 AMI:

ami-08847abae18baa040

OS:

$ cat /etc/system-release
Amazon Linux 2
$ cat /etc/system-release-cpe
cpe:2.3:o:amazon:amazon_linux:2

JDK:

java-1.8.0-openjdk-1.8.0.181-3.b13.amzn2.x86_64

输出:

Copy                  
MarkSweepCompact      
Code Cache            
Metaspace             
Compressed Class Space
Eden Space            
Survivor Space        
Tenured Gen     

服务器2

EC2 AMI:

ami-08847abae18baa040

OS:

$ cat /etc/system-release
Amazon Linux 2
$ cat /etc/system-release-cpe
cpe:2.3:o:amazon:amazon_linux:2

JDK:

java-1.8.0-openjdk-1.8.0.181-3.b13.amzn2.x86_64

输出:

PS Scavenge           
PS MarkSweep          
Code Cache            
Metaspace             
Compressed Class Space
PS Eden Space         
PS Survivor Space     
PS Old Gen        

如上所述,

  1. AMI和Linux版本相同
  2. JDK版本相同
  3. GarbageCollectorMXBean名称不同相同

    • 复制<-> PS Scavenge
    • MarkSweepCompact <-> PS MarkSweep
  4. MemoryPoolMXBean名称不同相同

    • 伊甸园空间<-> PS伊甸园空间
    • 生存空间<-> PS生存空间
    • 终身代<-> PS老一代

它们的唯一区别是ec2实例类型。

  • 服务器1是 t3.micro
  • 服务器2为 t3.small

这对我来说很奇怪,谁知道为什么?

0 个答案:

没有答案