我目前正在进行一项涉及 JVM 及其内存使用工作原理的研究。我不明白的是,JVM在空闲时用什么填充它的内存,只是为了在堆几乎达到时释放它?为什么使用的内存不只有一条平线?顺便说一句,这个 java 应用程序托管在 glassfish 上,但是当我只有一个简单的“hello world”swing 应用程序时,我有相同的图表。因此 GlassFish 无需对其执行任何操作。
提前致谢!
JVM 在空闲时用什么填充内存,然后在堆几乎达到时将其全部释放?
如果您的应用程序确实闲置,最有可能的情况是 VisualVM。尝试降低采样率,看看内存消耗率是否也下降。
为什么使用的内存不只有一条平线?
JMX 是用 Java 编写的,因此当它收集统计数据并序列化数据时,它会生成相当多的垃圾。您可以打开内存分析来确认所有内存消耗都与 JMX 和 VisualVM 相关。如果您使用商业分析器,该分析器使用本机代理来监视 JVM,则您不会看到此行为。例如YourKit 不这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)