从Java 6 + Tomcat 6升级到Java 8 + Tomcat 8时的垃圾收集器使用情况

我们正在从Java 6和Tomcat 6升级到Java 1.8.0_45和Tomcat 8.0.23,Linux服务器,64位。 我正在比较内存使用情况,而我正面临一种奇怪的行为。

这就是Eden Space在Tomcat 8中使用Java 8的方式,没有流量,只是启动和空闲: 在此处输入图像描述

这就是Java 6的标准,对我来说是标准的: java 6 tomcat 6

两个JVM的配置方式基本相同,基本上:

XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+DisableExplicitGC -Xms768m -Xmx2048m -Xmn400m

使用Java 8和Tomcat 8,小型GC几乎总是在运行,而tomcat日志显示如下:

1301,121: [GC (Allocation Failure) [PSYoungGen: 408960K->352K(409088K)] 1126151K->717559K(1915392K), 0,0093033 secs] [Times: user=0,02 sys=0,00, real=0,01 secs]

您是否知道JVM 8的一些特殊配置或我必须做的事情才能拥有与之前相同的行为?

编辑:

30分钟后,伊甸园空间是:

在此处输入图像描述

对我来说,这看起来首先是应用程序本身的问题。 您说应用程序处于空闲状态,但图表显示(即使在Java 6中)应用程序正在分配400MB内存并每秒释放两次。 听起来真的不像这个应用程序是空闲的。

可能你的应用程序创建了许多对象(即使它是“空闲”)。 自Java 6以来,在Java 8中更改了GC和优化器。这可以解释不同的图形。

但无论如何,我会首先尝试找出为什么应用程序在您预期空闲时不会空闲。