It might be useful to read about vsize and rssize in the man page
for "ps" on your system. The one I'm using (Fedora Linux) says
that vsize is
virtual memory size of the process in KiB
(1024-byte units). Device mappings are currently excluded;
this is subject to change.
while rssize is
resident set size, the non-swapped physical memory that a
task has used (in kiloBytes).
It seems entirely plausible to me that a process might be using
much more virtual memory than physical memory -- I mean, if its
address space (virtual memory) contains code or data that's not
being accessed very often, and there's not enough physical memory
to contain the whole address space plus address spaces of other
active processes, well, the operating system should be paging
inactive code/data out to disk.
Disclaimer: I don't claim expertise in operating systems or
memory management, but I've read a couple of undergraduate-level
textbooks.
The actual size can be obtained via JVM API
I started to write "any suggestions about what class? because
surely a Google search for 'JVM' and 'API' isn't going to be
useful" -- but then I tried it, and got this:
http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html
??