This is not so much a Lisp problem as an SBCL problem. SBCL just doesn't have a very good garbage collector. I nearly gave up on Lisp fighting with it, but ultimately switched to Clozure instead, and never regretted it: Clozure has a fantastic garbage collector. I run Clozure and Postgres side by side on one 4G Linode without a peep.