I think DAL connection was designed with web2py design in mind: on each request a controller is executed and also are executed all models files including database connection, and after request memory is freed and connection close,
I used it successfully in a long running app with a few hundreads of greenthreads (gevent), but I forced a close after each db query db._adapter.connection.close() and app always consumes less that 70Mb of RAM