我目前正在进行一项研究,涉及一些 JVM 及其内存使用情况。我不明白的是,JVM 在空闲时用什么填充它的内存,只是在堆快用完时释放它?为什么不只有一条已用内存的扁平线?顺便说一句,这个 Java 应用程序托管在 glassfish 上,但是当我只有一个简单的“hello world”swing 应用程序时,我有相同的图表。因此 GlassFish 无需对其执行任何操作。
提前致谢!
最佳答案
what does the JVM fill it's memory with when idle, just to release it all when the heap is almost reached?
如果您的应用程序确实处于空闲状态,最有可能的情况是 VisualVM。尝试降低采样率,看看速率内存消耗是否也下降。
Why isn't there just one flat line of used memory?
JMX 是用 Java 编写的,因此当它收集统计数据并序列化数据时,它会生成相当多的垃圾。您可以打开内存分析以确认所有内存消耗都与 JMX 和 VisualVM 相关。如果您使用使用 native 代理来监视 JVM 的商业分析器,您将看不到这种行为。例如YourKit 不会这样做。
关于java - JVM锯齿空闲进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13123457/