java 程序 young gc 次数频繁,怎么调试

有两台服务器,配置相差不大,运行的代码一样,java的配置的也一样,分配的留啦也一样,但是通过jstat -gc pid 看到的gc次数差别很大,像这样频繁的young gc ,该怎么调试?

192.168.1.138 | CHANGED | rc=0 >>
109837, 运行时间 02:39:30
109837, full  gc次数 6         平均时间 0.869
109837, young gc次数 1235      平均时间 0.087


192.168.1.139 | CHANGED | rc=0 >>
151208, 运行时间 02:46:08
151208, full  gc次数 22        平均时间 0.213
151208, young gc次数 10117     平均时间 0.057

增加内存,扩大初始化内存

先确定下两台服务器这个服务的访问量是不是一样,如果第二台访问过多,同事初始内存较小的话,可能会发生这种频繁GC。

可以看下你的服务器的 JVM 配置的是什么模式,一般用 -server 模式比较好。

JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx2048m -XX:PermSize=512M -XX:MaxPermSize=512m