Virtual memory != Resident memory
use a top or even the ps xua. the VSZ is the virtual memory request by the app... its the RAM that the app MIGHT need and so its reserved (but most of the times, only a small part is used). The RSS is the resident memory, its the amount of RAM actually used by the app and not in swap.
If you have no swap, you have all the virtual memory mapped to the real RAM, even if its never touched by the app. If you have swap, that unused area is virtually "remapped" to the swap and only stays in RAM the actual application memory
$ ps xua|grep "firefox\|RSS"
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
dleite 9361 4.9 12.9 2280832 1048048 pts/26 Sl+ Nov08 409:43 ./firefox
So in my case, 2.2GB of VSZ and 1GB of RSS... as i have swap, those 1.2GB of unused memory is mapped to the swap (without any IO) and not wasting RAM
"live cds run just fine without swap."
Yes, they waste ram and usually dont stay up for many hours/days, so the kernel swap problem would be hard to hit. but also remember that most liveCD will use the HD swap (or give the options to use it) if they find it