Directly from the man page of ps:
vsz VSZ virtual memory size of the process in KiB (1024-byte units). Device mappings are currently excluded; this is subject to change. (alias vsize)

ps -eo vsz,comm reports that nautilus is using a whopping 645.22 MB of memory, which is absolutely not true

System Monitor reports nautilus is using 37.8MB of memory (a reasonable number, so I'm assuming this is accurate)

Either vsz has been documented wrong in the man page of ps, or I'm confused. What units are vsz actually using? If I wanted to see memory usage in bytes or kilobytes, what would be a better option to send to ps -eo ? If it's a simple math conversion, I can deal with it, but I need to know what the conversion is.

Here's a short script to demonstrate:
ps -eo vsz,comm | awk '/nautilus/ {print $1}' | awk '{ sum=$1 ;
            hum[1024^2]="GB"; hum[1024]="MB"; hum[1]="KB";
            for (x=1024^2; x>=1; x/=1024){
                if (sum>=x) {
                    printf "%.2f %s\n",sum/x,hum[x];break
If you're curious, this is what I'm up to: