In general CMS does not reduce it's heap size because the free space is maintained in a freelist and reducing the committed space in the virtualspace for the CMS generation is complicated. The exception is after a Full GC when CMS should reduce the size of the heap.