With perm gen going away (and being replaced by metaspace) in JDK 8, it makes sense that the counter sun.gc.policy.generations should be "2", rather than "3". However, in JDK 8 that counter still says 3. As I understand, the intention was that this counter would allow you to (for example) know the range of the sun.gc.generation.$num.* counters describing each of $num < sun.gc.policy.generations in the heap. Recall that the erstwhile perm gen in JDK 7 used to be synonymous with sun.gc.generation.2, but the JDK 8 avatars are now sun.gc.metaspace and sun.gc.compressedclassspace.
The fix is simple, and I can submit a patch. Is there an existing bug for this? thanks! -- ramki