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