工具

1
2
3
4
5
6
[root@zlzz_game_aliyun_0053 logs]# jstat -gccapacity 18821 1000
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
1572864.0 1572864.0 1572864.0 157248.0 157248.0 1258368.0 2621440.0 2621440.0 2621440.0 2621440.0 0.0 1112064.0 71648.0 0.0 1048576.0 9496.0 948 17980
1572864.0 1572864.0 1572864.0 157248.0 157248.0 1258368.0 2621440.0 2621440.0 2621440.0 2621440.0 0.0 1112064.0 71648.0 0.0 1048576.0 9496.0 948 17981
1572864.0 1572864.0 1572864.0 157248.0 157248.0 1258368.0 2621440.0 2621440.0 2621440.0 2621440.0 0.0 1112064.0 71648.0 0.0 1048576.0 9496.0 948 17981
1572864.0 1572864.0 1572864.0 157248.0 157248.0 1258368.0 2621440.0 2621440.0 2621440.0 2621440.0 0.0 1112064.0 71648.0 0.0 1048576.0 9496.0 948 17981
1
2
3
4
5
6
7
8
9
10
11
12
[root@zlzz_game_aliyun_0053 logs]# jstat -gcutil 18821 1000
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 63.28 85.85 91.16 85.72 928 9.784 17608 12220.470 12230.254
0.00 0.00 64.78 85.85 91.16 85.72 928 9.784 17609 12220.886 12230.670
0.00 0.00 66.22 85.85 91.16 85.72 928 9.784 17609 12220.886 12230.670
0.00 0.00 67.61 85.85 91.16 85.72 928 9.784 17609 12220.886 12230.670
0.00 0.00 68.87 85.85 91.16 85.72 928 9.784 17610 12221.340 12231.124
0.00 0.00 70.26 85.85 91.16 85.72 928 9.784 17610 12221.340 12231.124
0.00 0.00 72.36 85.85 91.16 85.72 928 9.784 17610 12221.340 12231.124
0.00 0.00 73.31 85.85 91.16 85.72 928 9.784 17610 12221.340 12231.124
0.00 0.00 75.71 85.85 91.16 85.72 928 9.784 17611 12221.768 12231.552
0.00 0.00 77.14 85.85 91.16 85.72 928 9.784 17611 12221.768 12231.552

怀疑

  1. 地图太大,导致格子太多
  2. old区和eden区分配不对,导致old去太小
  3. 一张地图占用大小已经25M

GC日志输出

1
2
3
-Xloggc:gc.log
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails

成果

  1. 干掉无用grid,少了700M内存。
  2. old区和eden去采用默认比例,重启后服务器没在出问题
  3. 删除point中的不必要map,内存降低无数倍
  4. 设置point中的容器属性的初始化大小
  5. 最终降低1G多内存(空跑的情况下)

还可以继续优化,Point中的A属性看能否干掉,只在A寻路的时候设置

为何空跑一晚上old区内存从184增加到了300多?