2009-03-19 4 views
3

Lorsqu'une JSP est terminée, toutes les variables déclarées dans la page JSP seront-elles mises en place pour la récupération de place? Si je déclare un certain nombre de Hashtables gourmands en mémoire dans la JSP, et que je laisse l'exécution JSP terminer sans que les variables soient au préalable nulles, l'objet restera-t-il en mémoire même après l'exécution du JSP?Que se passe-t-il lorsqu'un JSP termine l'exécution?

(je ne suis pas les stocker dans une variable persistante, comme session. Juste une variable locale.)

Répondre

3

Si les variables sont déclarées dans la portée de la demande ou de la page, oui, ils sont admissibles à la collecte des ordures.

Même si vous définissez une référence d'objet sur null, elle consomme toujours de la mémoire, seul le nombre de références diminue de 1. Si le nombre de références est 0, le garbage collector libère la mémoire.

+2

Java n'utilise pas de GC de refcounting. – jrockway

0

Eh bien, le moteur JSP supprime la page JSP de la mémoire une fois l'exécution terminée (si la portée n'est pas définie sur session). Cependant, pour éviter les fuites de mémoire, vous devez utiliser la méthode jspDestroy() pour libérer de la mémoire.

0

Si vous voulez savoir exactement quel code logique Java le JSP traduit, vous pouvez utiliser Jasper pour générer le code. (Différents moteurs JSP généreront probablement des résultats différents, mais la portée des variables et ainsi de suite devrait être conforme à la spécification.) Vous aurez besoin de Tomcat et Ant.

Ce script batch exemple génère le code Java pour test.jsp dans la sortie répertoire:

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 
SET ANT_HOME=C:\dev\apache-ant-1.7.1 
SET TOMCAT_HOME=C:\Program Files\Apache Software Foundation\Tomcat 6.0 
SET CLASSPATH=" 
FOR /r "%TOMCAT_HOME%\bin\" %%a IN (*.jar) DO SET CLASSPATH=!CLASSPATH!;%%a 
FOR /r "%TOMCAT_HOME%\lib\" %%a IN (*.jar) DO SET CLASSPATH=!CLASSPATH!;%%a 
SET CLASSPATH=!CLASSPATH!;%ANT_HOME%\lib\ant.jar" 
MKDIR output 
java org.apache.jasper.JspC -d .\output -webapp .\WebContent test.jsp 

WebContent est le répertoire racine de l'application Web. Le code généré est une servlet et suit le cycle de vie de la servlet tel que défini dans la spécification.

Questions connexes