首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat垃圾收集频率

Tomcat垃圾收集频率
EN

Stack Overflow用户
提问于 2012-01-19 03:20:29
回答 3查看 13.5K关注 0票数 7

我是Java新手,刚刚继承了Tomcat安装程序,所以我需要一些指导:)上周我读到了更多关于JVM调优和垃圾收集算法的内容!

使用Visual VM/GC,我们的Tomcat服务器每天只执行一次完整的GC。考虑到大多数用户的web会话持续时间不到一小时,这对我来说似乎很少发生,而且可能在perm gen中有很多“死”的对象很长一段时间?那么,这是否仅仅意味着我们有足够的RAM/堆空间,并且它根本不需要收集,所以它不需要收集?

考虑到这一点,把旧的一代变小,新的一代变大是不是更好,因为提升率很小?

我之所以这样问,是因为操作系统中的其他地方有迹象表明我们可能存在内存压力,但JVM/GC日志似乎与操作系统相矛盾。

与此相关的是-

我们目前有min-heap=max-heap=6Gb。如果top显示的java进程大小为7-8 2Gb,而RSS为5-6 2Gb,那么这是否意味着2 2Gb被换出?在这种情况下,当它充满GC时,它就会死亡。因此,在操作系统换出最小堆大小之前,比GC更经常地使用更小的最小堆大小会更好吗?

一般来说,最好的做法是让JVM自己调优,而不是纠结于手动设置所有参数,还是大多数人都手动设置参数?

EN

回答 3

Stack Overflow用户

发布于 2013-01-30 18:06:57

您使用的是哪个版本的Tomcat?

在防止内存泄漏的gubbins中有一个bug,它会导致整点GC满员:

https://issues.apache.org/bugzilla/show_bug.cgi?id=53267

(请注意,bug在tomcat7上提到了它,但6也受到了影响,已在6.0.36中修复)

票数 9
EN

Stack Overflow用户

发布于 2012-01-21 02:17:17

垃圾收集是内存分配和性能之间的折衷。想象一下你的阁楼。如果你一直往里面扔东西,最终它会变满,你必须把它清理干净。如果你有一个小的阁楼,你可能一个月填满一次,但你只需要20分钟就可以清理干净。如果你有一个很大的阁楼,可能需要一年才能填满,但需要一个周末才能清理干净。

JVM也是如此。如果你分配了6 GB,但你真的可以使用1.5 GB,那么你的垃圾收集频率就会降低很多,但当垃圾收集发生时,它可能会让世界停止一分钟以上。

清道夫垃圾收集释放了多少内存?

如果清道夫(从伊甸园复制到Survivor)正在回收大部分内存,那么你有很多非常短暂的对象。如果增加New Generation的大小,则这些垃圾收集将变得不那么频繁,但它们将花费更长的时间。理想情况下,您希望这些对象尽可能快,这意味着保持该空间足够小,以便它可以快速清理,但又要足够大,以便短暂的对象不会被提升到永久一代。我不会修改New Generation的大小,除非我确定生命周期短(即请求)的对象在不应该被保留的时候被保留。

您的完整垃圾回收释放了多少内存?

如果您现在需要几天时间才能填满6 GB空间,考虑到堆累积了自上次完整GC以来您收到的每个用户会话和请求的对象,我怀疑您正在使用完整GC释放堆的大部分空间。如果不是,那么您可能应该调查是否存在内存泄漏(可能是流氓缓存)。如果您正在使用完整的GC释放大部分堆,则应该调查较小的堆大小是否有意义。

较小的堆将增加完全垃圾回收的频率,但会显著缩短暂停时间。在web应用程序中,如果在高峰期发生长时间停止世界的完全垃圾回收,这是不可接受的。

如果,正如您所指出的,Java堆可能会被操作系统交换,那么您绝对应该考虑缩小它。但我不会篡改新生代的尺码。

票数 8
EN

Stack Overflow用户

发布于 2012-01-19 06:23:20

根据我的经验,我认为声明

“服务器每天只做一次完整的GC”

“操作系统中的其他地方有迹象表明我们可能有内存压力。”

相互矛盾。一般来说,GC的频率随着记忆的改变而增加,这种情况发生的频率越低越好。

请记住,完全GC意味着所有应用程序活动都会停止-有时这可能需要几分钟的时间,特别是对于大型堆!

例如,我有许多实时运行的系统,每个系统有大约1.4k的HTTP会话,每个机器(-Xmx=13g)每小时处理大约1-2个完整的GC。理想情况下,我们希望它的频率更低,但由于应用程序的性质,我们不能。

您需要澄清您正在尝试解决的真正问题是什么,因为从您提供的信息中,我看不到任何需要调整的东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8916002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档