Java垃圾收集器的行为是随着时间的推移而演变还是受到JIT的影响?
我们的intranet上运行着一个生产web应用程序,该应用程序:Java垃圾收集器的行为是随着时间的推移而演变还是受到JIT的影响?,java,garbage-collection,jvm,jit,Java,Garbage Collection,Jvm,Jit,我们的intranet上运行着一个生产web应用程序,该应用程序: 每天凌晨3点重新启动,以便对其数据库执行备份 在整个工作日内(0800至1700)具有相同的负载 正在Java HotSpot(TM)64位服务器VM版本20.45-b01上运行 运行在具有16个内核和32 Gig RAM的物理机器上,运行Linux 2.6.18-128.el5 不与任何其他重要流程共享机器 配置有: -Xms2g -XX:PermSize=256m -Xmx4g -XX:MaxPermSize=256m -
- 每天凌晨3点重新启动,以便对其数据库执行备份
- 在整个工作日内(0800至1700)具有相同的负载
- 正在Java HotSpot(TM)64位服务器VM版本20.45-b01上运行
- 运行在具有16个内核和32 Gig RAM的物理机器上,运行Linux 2.6.18-128.el5
- 不与任何其他重要流程共享机器
- 配置有:
-Xms2g -XX:PermSize=256m -Xmx4g -XX:MaxPermSize=256m -Xss192k -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=50 -XX:+DisableExplicitGC
- 从启动到0800逐渐上升到90%
- 在9时30分之前保持在90%
- 从0930年到1415年保持在70%
- 在1415年下降到50%
- 在1445年降至37%
(只是重申一下,我知道有成千上万的事情可能会影响应用程序的行为,尤其是其他人几乎不知道的应用程序!我真的只想知道JVM的内存性能是否与某些事情有关,而这些事情在停止时会丢失)是,由于JIT优化,地面军事系统的行为可能随时间而改变。一个例子是“转义分析”,它自Java6U23以来默认启用。这种类型的优化可以防止在堆中创建某些对象,因此根本不需要垃圾收集
有关更多信息,请参阅。我对此一无所知,尽管我怀疑完整的JIT优化只有在运行6个小时后才会生效(0930内存使用量最大,之后会下降)。对我来说,这看起来很像一个垃圾收集,一开始太懒了。如果从-Xmx3g开始,会发生什么?它是否内存不足?我很可能认为,在第一个小时左右之后,您看到的大部分波动都是由于工作负载的变化造成的。