Well ShareMe seems to have fallen off the planet so I will describe the gist of it.
* Make sure you don't have objects sitting around in collections
* Make sure you set references to null
* Do manual garbage collections at point when you know you just allocated a bunch of temporary memory (loading files, images, etc)
* (more useful), build a system that performs regular garbage collection sweeps. This is obvious, but not generally used or advised by Sun. It works well (I've actually tested it) because you are collecting at a regular interval that is tunable for your application in a deterministic manner - and it means that when the collection happens, there isn't as much stuff to collect because you've gone out of your way to keep heap trash to a minimum
So in general - its not something that you shouldn't already know as a Java programmer, its not until you actually use it under load that you really appreciate it. Its the difference between your large application running and being a stuttering mess