Fixes in approximate order of preference:
1) Remove or adjust any resources limits (RSS/VM) on the bitcoind process.
2) Add more physical RAM.
3) Add more swap space.
4) Turn on memory overcommit.
On my 64-bit Linux box, bitcoind needs about 1GB of virtual memory and about 256MB of physical memory.
I don't know why it's crashing, but I do know that you don't need the -daemon switch if you're running bitcoind.
It's either bitcoin -daemon or just bitcoind, but not bitcoind -daemon.
If you want to run bitcoind as a daemon, you have to give it the -daemon flag.
$ ./bitcoind -daemon
bitcoin server starting
$
$ ./bitcoind
[wait forever, bitcoind is running]