Java JVM默认垃圾收集器:它是否在不同的应用程序中配置相同?

问题描述 投票:0回答:1

只需在标题中指定。

我运行了一个测试并使用JMX记录了它的内存堆使用模式。然后我重新调查我的jar文件并再次研究它的内存行为。结果是内存模式略有不同。在这两种情况下,我都没有预配置我的垃圾收集器。所以我现在想知道两个默认垃圾收集器在同一台机器上是否具有相同的配置。

如果没有,如何在不指定许多参数的情况下确保我的垃圾收集器是相同的?如果不是GC配置,还有什么可以促成我的结果?

java garbage-collection jvm benchmarking
1个回答
2
投票

如果在同一台计算机上使用相同的JVM运行相同的应用程序,则堆和GC参数将相同。

人机工程学是一种在JDK 5.0中引入的功能,试图从GC调整中消除一些猜测。服务器级机器(2个或更多内核和2个或更多Gb内存)将使用1/4的物理内存(最大1Gb)用于初始和最大堆大小(请参阅https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/ergonomics.html)。因此,默认情况下,不同的机器可能具有不同

要准确找出您设置的标志,请使用:java -XX:+PrintFlagsFinal -version

内存使用模式的差异只是应用程序的非确定性行为。即使使用完全相同的输入集,我怀疑你会看到完全相同的内存行为,直到许多其他操作系统和硬件效果(缓存,核心亲和力等)

© www.soinside.com 2019 - 2024. All rights reserved.