i would suggest you to use some open source application(s) for performance and memory overview.
for example use "JProfiler" if you want to see the memory usage of your application. this is really a good tool for getting the deep memory info in the form of graphs and charts.
The memory for the java process reported by the operating system includes:
* The amount of heap space allocated (this is not just the space used by "live" objects)
* The permgen space used to store class info
* The thread stacks (usually 1MB per thread, but that depends on several factors)
* The C/C++ data structures used by the java process
* The memory occupied by the executable and any shared libraries (*.dll, *,so) loaded by the process (if several process use the same code, this is shared between then but is often reported as memory used by each)
(I'm sure I forgot something...)
Monitoring operating system memory stats is NOT the way to determine heap usage - you must use Java-specific tools for this. JConsole, VisualVM and many other tools will provide heap usage information.