I'm running the client in Ubuntu 14.04 LTS. (maybe debug mode?)
Every time re-indexing the block chain database, it eats more RAM, say about 3GB for 0.4.20, more than 3GB for 0.4.23.
So.. if you run the client with less than 3G RAM, it's better to start from an empty database, don't upgrade from a old chain database.
Another experience in a old version of client: when syncing from a chain server, the client eats more and more RAM as well. Restart works. Maybe there is a memory leak bug.