2009-03-19 6 views
3

Wenn eine JSP Ausführung beendet, werden alle in der JSP-Seite deklarierten Variablen für die Garbage Collection gestellt werden? Wenn ich eine Reihe von speicherintensiven Hashtables in der JSP erklären, und ich lasse das Ziel JSP Ausführung ohne die Variablen zuvor eingestellt wird auf null, wird im Speicher das Objekt Aufenthalt auch nach dem JSP Ausführung beendet hat?Was passiert, wenn eine JSP Ausführung beendet?

Antwort

3

Wenn die Variablen deklariert sind in Anforderung oder Seitenumfang, ja, sie sind berechtigt, für die Garbage Collection (ich sie in einer persistenten Variable, wie Sitzung. Gerade in einer lokalen Variablen. Nicht speichern).

Auch wenn Sie einen Objektverweis setzen Sie ihn auf null noch Speicher verbraucht, nur der Referenzzähler verringert sich um 1. Wenn der Referenzzähler 0 ist der Garbage Collector den Speicher frei wird.

+2

Java keine Refcounting GC verwenden. – jrockway

0

Nun, entfernt die JSP-Engine der JSP-Seite aus dem Speicher, wenn die Ausführung beendet hat (wenn der Anwendungsbereich nicht auf Sitzung festgelegt ist). Um jedoch Speicherlecks zu vermeiden, sollten Sie die jspDestroy() -Methode verwenden, um Speicher freizugeben.

0

Wenn Sie genau herausfinden möchten, welchen Java-Logikcode die JSP übersetzt, können Sie Jasper verwenden, um den Code zu generieren. (Unterschiedliche JSP-Engines erzeugen wahrscheinlich unterschiedliche Ausgaben, aber der Umfang der Variablen usw. sollte der Spezifikation entsprechen.) Sie benötigen Tomcat und Ant.

Dieses Beispiel Batch-Skript generiert die Java-Code für test.jsp im Ausgang Verzeichnis:

@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 das Stammverzeichnis der Web-Anwendung ist. Der generierte Code ist ein Servlet und folgt dem Servlet-Lebenszyklus, wie er in der Spezifikation definiert ist.