JVM锯齿空闲进程

Ren*_*eld 2 java garbage-collection jvm

我正在进行一项研究,调查一些JVM以及它的内存使用情况.我不明白的是,JVM在空闲时填充它的内存是什么,只是在几乎达到堆时释放它?为什么不只有一个用过的内存扁平线?顺便说一句,这个java应用程序托管在glassfish上,但是当我有一个简单的'hello world'swing应用程序时,我有相同的图表.所以GlassFish不必对它做任何事情.

在此输入图像描述

提前致谢!

Pet*_*rey 6

什么JVM在空闲时填充它的内存,只是在几乎达到堆时释放它?

如果您的应用程序真正空闲,最可能的情况是VisualVM.尝试降低采样率并查看速率存储器是否消耗也会下降.

为什么不只有一个用过的内存扁平线?

JMX是用Java编写的,所以当它收集统计信息并序列化数据时,会产生相当多的垃圾.您可以打开内存分析以确认所有内存耗尽都与JMX和VisualVM相关.如果使用使用本机代理监视JVM的商业概要分析程序,则不会看到此行为.例如,YourKit不会这样做.

  • 是的,就是这个!事实证明,当我将间隔更改为每 15 秒而不是每 1 秒时,VisualVM 确实显示更少的内存使用!非常感谢!你让我很开心! (2认同)