Memory Jenkins服务器Java.exe内存增长非常快

Memory Jenkins服务器Java.exe内存增长非常快,memory,jenkins,Memory,Jenkins,我们正在运行Jenkins服务器,很少有运行构建的从属服务器。最近,越来越多的构建同时运行。 我看到Jenkins服务器上的java.exe进程只是在增加,甚至在作业完成后也没有减少 你知道为什么会这样吗 我们是詹金斯·弗尔。1.501 有没有办法让Jenkins服务器服务ro等待最后一个作业完成,然后自动重新启动?我似乎找不到这方面的参考资料(仍在发布答案,因为它太长,无法发表评论;-),但这是我在使用Oracle JVM时观察到的: 如果需要比当前保留的内存更多的内存,JVM将保留更多的内存

我们正在运行Jenkins服务器,很少有运行构建的从属服务器。最近,越来越多的构建同时运行。 我看到Jenkins服务器上的java.exe进程只是在增加,甚至在作业完成后也没有减少

你知道为什么会这样吗

我们是詹金斯·弗尔。1.501


有没有办法让Jenkins服务器服务ro等待最后一个作业完成,然后自动重新启动?

我似乎找不到这方面的参考资料(仍在发布答案,因为它太长,无法发表评论;-),但这是我在使用Oracle JVM时观察到的:

如果需要比当前保留的内存更多的内存,JVM将保留更多的内存。到现在为止,一直都还不错。当不再需要内存时,它似乎不会释放内存。您可以通过在Eclipse中打开堆大小指示器来观察这种行为

我要说詹金斯也是如此。一个只有几个项目的跑步健将已经可以轻松跳出1吉格大关。如果有很多并发构建,Jenkins在某个时候需要大量内存。构建完成且堆化减少后,JVM将保留内存。它实际上是“空的”,但仍然由JVM声明,因此其他进程无法使用它

再说一遍:这只是一个观察。如果有人对Java内存管理有更深入的了解,我会很高兴支持(或反驳)


至于一个切实可行的解决方案,我想说你必须接受它到某个程度。詹金斯非常渴望记忆。重新启动它只能暂时解决问题。至少它应该在某个时候停止占用内存,因为“空的”保留内存应该被重用。如果不是这样,这听起来像是内存泄漏,可能是一个bug。

詹金斯(过度)无限制地使用内存似乎是一个常见的观察结果。詹金斯维基为“”提供了一些建议

我们还发现,在监视内存使用情况和帮助我们知道是否需要尽快重新启动Jenkins时,使用

有没有办法让Jenkins服务器服务ro等待最后一个作业完成,然后自动重新启动

查看