By default, the JVM will use all the memory you give it. Have you tried simply setting a small maximum heap size? You can use VisualVM to visualize the heap and GC. Deep monitoring is one of the JVM's greatest strengths.
I'm just kind of surprised and disconcerted how little I could find on the web, specifically for minimizing footprint.