我目前正在进行研究,调查一些JVM以及它的内存使用情况。我不明白的是,JVM在空闲时填充它的内存是什么,只是在几乎达到堆时释放它?为什么不只有一个用过的内存扁平线?顺便说一句,这个java应用程序托管在glassfish上,但是当我有一个简单的'hello world'swing应用程序时,我有相同的图表。所以GlassFish不必对它做任何事情。
提前致谢!
答案 0 :(得分:5)
JVM在空闲时填充内存是什么,只是在几乎达到堆时才释放它?
如果您的应用程序真正空闲,最可能的情况是VisualVM。尝试降低采样率并查看消耗的速率存储器是否也会消耗。
为什么只有一条平坦的已用内存?
JMX是用Java编写的,所以当它收集统计信息并序列化数据时,会产生相当多的垃圾。您可以打开内存分析以确认所有内存耗尽都是JMX& VisualVM相关。如果使用使用本机代理监视JVM的商业概要分析程序,则不会看到此行为。例如YourKit不会这样做。