is there a way to identify which process utilizes how much memory.

i guess top and prstat do it right ?? any other way ??

also how to know if after stop/kill/die of a process its memory which
was used is completely freed.

ie say
process id name
1232 java

is running
i then kill it using kill -9

now say this process used 300MB memory as shown in top

now will this completely be freed after the kill.
and how do i identify this? and incase not freeed then where is it
located.? how to identify this ??