The very first thing you must make sure, is that your object are garbage collectible. But that's just the first step.
Secondly, the memory used by the JVM may not be returned to the OS at all.
For instance. Let's say you have 100 mb of java objects, your VM size will be 100mb aprox. After the garbage collection you may reduce the heap usage to to 10 mb, but the VM will stay in something around 100 mb. This strategy is used to allow the VM have available memory for new objects.
To have the application returning "physical" memory to the system you have to check if your VM support such a thing.
There are additional VM options that may allow your app return more memory to the OS:
-XX:MaxHeapFreeRatio=70 Maximum percentage of heap free after GC to avoid shrinking.
-XX:MinHeapFreeRatio=40 Minimum percentage of heap free after GC to avoid expansion.
In my own interpretation using those options the VM will shirk if it fall below 70%. But quite frankly I don't know if only the heap will be shrink and returned to the OS or only shrink inside the VM.
For a complete description on hot the memory management works see:
Description of HotSpot GCs: Memory Management in the Java HotSpot Virtual Machine White Paper: http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
And please, please. Give it a try and measure and let us know back here if that effectively reduces the memory consumption.