El elevador almacena la información de estado en una sesión, por lo que una vez que se destruye la sesión, el estado asociado con esa sesión desaparece.
Dentro de la sesión, Lift rastrea cada página para la que se asigna el estado (por ejemplo, asignación entre un botón ajax en el navegador y una función en el servidor) y tiene un latido del corazón del navegador. Las funciones para las páginas que no han visto el latido en 10 minutos no están referenciadas, por lo que la JVM puede recopilarlas. Todo esto es sintonizable, por lo que puede cambiar la frecuencia de latido del corazón, la vida útil de la función, etc., pero en la práctica los valores predeterminados funcionan bastante bien.
En términos de explosión de sesión, sí ... eso es un problema menor. Los sitios populares (incluido http://demo.liftweb.net/) lo experimentan. El código de ejemplo (vea http://github.com/lift/lift/tree/master/examples/example/) detecta las sesiones que fueron creadas por una sola solicitud y luego las abandona y caduca anticipadamente. Estoy ejecutando demo.liftweb.net con 256 MB de tamaño de almacenamiento dinámico (que cabría en un VPS de 512 MB) y, de vez en cuando, el recuento de sesiones aumenta más de 1.000, pero eso se aprieta rápidamente para el tráfico del motor de búsqueda.
Respuesta del autor, me siento honrado. Gracias por los detalles y por un maravilloso proyecto! –