Top header says 50% free, but table shows 100% used

Hi,

Can anyone explain this?

top - 04:21:04 up 23 days,  2:35,  1 user,  load average: 0.02, 0.02, 0.00
Tasks:  37 total,   1 running,  36 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    524288k total,   253084k used,   271204k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
12212 root      18   0  270m 106m 7320 S  0.0 20.8   0:36.63 httpd             
18037 nobody    18   0  270m 100m 1284 S  0.0 19.6   0:00.00 httpd             
18041 nobody    18   0  270m 100m 1248 S  0.0 19.6   0:00.00 httpd             
18042 nobody    18   0  270m  99m  688 S  0.0 19.5   0:00.00 httpd             
18035 root      19   0  220m  97m  124 S  0.0 19.0   0:00.00 httpd        

There are many more lines of top results, adding up to well over 100%. Due to decent performance, I'm assuming the values in the header section are correct, but why the discrepancy? It is a VPS, if that's relevant.

Cheers,
Dave

That probably includes any shared memory, i.e. things like libc that get loaded into memory once but used in umpteen different processes.