闲置时JVM锯齿模式? JVM在此期间做了什么?

时间:2012-10-18 15:28:48

标签: java swing memory jvm

我在想。我有一个带有servlet的简单Java Web项目。当没有用户使用它时(我在GlassFish上本地托管它)我仍然在进程的内存使用中看到锯齿模式。我似乎无法理解JVM正在做什么?我理解JVM使用的内存的正常流程。堆正在填充应用程序正在创建的对象。在某个时刻,堆到达垃圾收集器进入的点,这将删除所有不再使用的“缓存”对象,以便可以创建新对象并填充堆大小。

我想知道的是,JVM在空闲时一直在做什么? enter image description here

编辑:

像我在评论中所说的那样。我在Eclipse中创建了一个非常简单的Java应用程序,它显示了一个Swing窗口,上面写着'hello world'。当我在Java VisualVM中观察JVM的内存使用情况时,我看到了相同的锯齿模式。

2 个答案:

答案 0 :(得分:8)

事实证明,VisualVM是有罪的。这是因为VisualVM不断向JVM询问它的统计信息是什么,因此JVM创建了向VisualVM提供信息的对象。

谢谢 Peter Lawrey

答案 1 :(得分:3)

我的猜测是应用服务器正在进行某种幕后的簿记。请记住,即使没有人使用它,仍然有后台运行的线程。此外,您的应用程序是否使用任何类型的按时间顺序的触发器框架,如Quartz?或者,如何记录。尽管它可能没有主动向文件发送日志消息,但仍然会调用Logger,这会导致创建/销毁各种事物。