I did some tests on my own and my conclusion is that it seems to be a bug in jstat when running with your JVM parameters. I ran jstat -gc and jstat -gcutil at the same time on a simple test application and I had the following output:
jstat -gc:
S0C S1C S0U S1U EC EU OC OU
29120,0 29120,0 0,0 0,0 466048,0 18642,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 18642,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 18642,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 18642,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 18642,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 55926,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 369663,6 3670016,0 0,0
29120,0 29120,0 0,0 29120,0 466048,0 466048,0 3670016,0 94773,6
29120,0 29120,0 0,0 29120,0 466048,0 299100,8 3670016,0 118478,6
29120,0 29120,0 29120,0 0,0 466048,0 9163,2 3670016,0 254498,6
jstat -gcutil
S0 S1 E O P YGC YGCT FGC FGCT GCT
0,00 0,00 4,00 0,00 0,93 0 0,000 0 0,000 0,000
0,00 0,00 4,00 0,00 0,93 0 0,000 0 0,000 0,000
0,00 0,00 4,00 0,00 0,93 0 0,000 0 0,000 0,000
0,00 0,00 4,00 0,00 0,93 0 0,000 0 0,000 0,000
0,00 0,00 4,00 0,00 0,93 0 0,000 0 0,000 0,000
0,00 0,00 26,00 0,00 0,97 0 0,000 0 0,000 0,000
0,00 0,00 89,32 0,00 0,97 0 0,000 0 0,000 0,000
0,00 100,00 100,00 100,00 0,97 1 0,000 0 0,000 0,000
0,00 100,00 80,02 3,23 0,97 1 0,905 0 0,000 0,905
100,00 0,00 13,76 6,93 0,97 2 1,441 0 0,000 1,441
As you can see, my Old used when running -gcutil jumps to 100 even though the application just started filling old gen. jstat -gc shows the old generation almost entirely empty. The application is very simple and just fills up a HashMap, why there is no way that old gen would be 100% full when jstat -gcutil says so.