some process is making a peak on ram usage therefore kernel starts killing processes. I suggest htop - you can order processes by ram usage.
there's probably is a better way to monitor this but I am not a system administrator :-)
Most of the memory is used by bitcoind. It usually shows 30%. Below is some of the output from top:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
652 bitcoin 35 15 2689m 612m 4048 S 1 30.6 844:08.78 bitcoind
20177 www-data 20 0 358m 15m 3784 S 0 0.7 0:00.29 apache2
20463 www-data 20 0 357m 14m 3728 S 0 0.7 0:00.20 apache2
20136 www-data 20 0 358m 14m 3760 S 0 0.7 0:00.20 apache2
20474 www-data 20 0 357m 14m 3572 S 0 0.7 0:00.11 apache2
19096 www-data 20 0 356m 13m 3972 S 0 0.7 0:01.09 apache2
19098 www-data 20 0 355m 13m 3908 S 0 0.7 0:00.98 apache2
20135 www-data 20 0 352m 9092 3812 S 0 0.4 0:00.28 apache2
Not only is bitcoind a memory hog, it is also a disk hog.
You can disable the wallet, set the cache lower and decrease the maximum connections but that's about all you can do to minimise its ram usage. It will still use heaps of ram. Short of a rewrite, or using different software, there's no way around it.
What do you think is the lowest that I can set cache and maximum connections to? According to https://en.bitcoin.it/wiki/Running_Bitcoin , there is a dbcache setting, but no cache setting. Are you referring to dbcache?