The -XMs only tells the VM how much memory to initially allocate, and doesn't have any correlation with normal operation of GC. I've used -XMs in the past when I know my memory requirements are pretty large, and that way will keep the VM from continuing to dynamically allocate more and more memory up to the XMx setting.