la sesión NO se destruye al cerrar o salir de la página, simplemente cuando llamas a session_start() le indicas al modulo session de php que las lea, porque las mismas se guardan en un archivo en el
servidor (esto se puede cambiar)
las sesiones pueden ser automáticas (se configura desde php.ini) pero no es recomendable, porque si se desea cambiarle el nombre a la cookie (o a la sesión), implica usar de nuevo session_start() para re-leerlas
por defecto las sesiones usan una cookie (almacenadas en el
navegador cliente) cuyo nombre es el session_name y en el valor esta el SID, php permite adaptar el modulo session para evitar el uso de las cookies,
pasando el SID por get, pero esto es un método arcaico y prácticamente ya no se usa.
session_start() sirve para indicarle a php que lea y cargue los datos de la sesión con respecto a la cookie correcta, es por ello que se requiere llamarlo cada vez que se intenta obtener y editar las variables de sesión; si especificas un nombre de sesión especifico, debes llamar a session_name() antes de session_start()
como las cookies tienen caducidad, es obvio que
al caducar la cookie la sesión caduque,
esto puede modificarse.
Problema común: si tu navegador tiene las cookies desactivadas, obviamente los datos de sesión se "perderán" (o mejor dicho: el navegador
no envía la cookie y php obviamente no puede leer los datos de sesión)
espero que esto te aclare un poco, si no pregunte