You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2011/10/19 11:43:22 UTC

svn commit: r1186054 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/jasper/util/FastRemovalDequeue.java test/org/apache/jasper/util/ test/org/apache/jasper/util/TestFastRemovalDequeue.java webapps/docs/changelog.xml

Author: markt
Date: Wed Oct 19 09:43:22 2011
New Revision: 1186054

URL: http://svn.apache.org/viewvc?rev=1186054&view=rev
Log:
Correct possible (but very small) memory leak when using maxLoadedJsps to limit the number of JSPs loaded at any one time.

Added:
    tomcat/tc7.0.x/trunk/test/org/apache/jasper/util/
      - copied from r1185758, tomcat/trunk/test/org/apache/jasper/util/
    tomcat/tc7.0.x/trunk/test/org/apache/jasper/util/TestFastRemovalDequeue.java
      - copied unchanged from r1185758, tomcat/trunk/test/org/apache/jasper/util/TestFastRemovalDequeue.java
Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/jasper/util/FastRemovalDequeue.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Oct 19 09:43:22 2011
@@ -1 +1 @@
-/tomcat/trunk:1156115,1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172556,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096,1173241
 ,1173256,1173288,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175690,1175713,1175889,1175896,1175907,1176584,1176590,1176799,1177050,1177060,1177125,1177152,1177160,1177245,1177850,1177862,1177978,1178209,1178228,1178233,1178449,1178542,1178681,1178721,1180261,1180907,1181028,1181123,1181125,1181136,1181291,1181743,1182796,1183078,1183105,1183142,1183328,1183339-1183340,1183492-1183494,1183605,1184917,1184919,1185018,1185020,1185200,1185588,1185626,1186042-1186045
+/tomcat/trunk:1156115,1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172556,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096,1173241
 ,1173256,1173288,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175690,1175713,1175889,1175896,1175907,1176584,1176590,1176799,1177050,1177060,1177125,1177152,1177160,1177245,1177850,1177862,1177978,1178209,1178228,1178233,1178449,1178542,1178681,1178721,1180261,1180907,1181028,1181123,1181125,1181136,1181291,1181743,1182796,1183078,1183105,1183142,1183328,1183339-1183340,1183492-1183494,1183605,1184917,1184919,1185018,1185020,1185200,1185588,1185626,1185756,1185758,1186042-1186045

Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/util/FastRemovalDequeue.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/util/FastRemovalDequeue.java?rev=1186054&r1=1186053&r2=1186054&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/util/FastRemovalDequeue.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/util/FastRemovalDequeue.java Wed Oct 19 09:43:22 2011
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,7 +17,7 @@
 package org.apache.jasper.util;
 
 /**
- * 
+ *
  * The FastRemovalDequeue is a Dequeue that supports constant time removal of
  * entries. This is achieved by using a doubly linked list and wrapping any object
  * added to the collection with an Entry type, that is returned to the consumer.
@@ -50,9 +50,9 @@ public class FastRemovalDequeue<T> {
     /** Maximum size of the queue */
     private final int maxSize;
     /** First element of the queue. */
-    private Entry first;
+    protected Entry first;
     /** Last element of the queue. */
-    private Entry last;
+    protected Entry last;
     /** Size of the queue */
     private int size;
 
@@ -71,7 +71,7 @@ public class FastRemovalDequeue<T> {
      * Retrieve the size of the list.
      * This method also needs to be externaly synchronized to
      * ensure correct publication of changes.
-     * 
+     *
      * @return the size of the list.
      * */
     public synchronized int getSize() {
@@ -81,7 +81,7 @@ public class FastRemovalDequeue<T> {
     /**
      * Adds an object to the start of the list and returns the entry created for
      * said object. The entry can later be reused for moving the entry.
-     * 
+     *
      * @param object the object to prepend to the start of the list.
      * @return an entry for use when the object should be moved.
      * */
@@ -105,7 +105,7 @@ public class FastRemovalDequeue<T> {
     /**
      * Adds an object to the end of the list and returns the entry created for
      * said object. The entry can later be reused for moving the entry.
-     * 
+     *
      * @param object the object to append to the end of the list.
      * @return an entry for use when the object should be moved.
      * */
@@ -128,7 +128,7 @@ public class FastRemovalDequeue<T> {
 
     /**
      * Removes the first element of the list and returns its content.
-     * 
+     *
      * @return the content of the first element of the list.
      **/
     public synchronized T unpush() {
@@ -137,7 +137,9 @@ public class FastRemovalDequeue<T> {
             Entry element = first;
             first = first.getNext();
             content = element.getContent();
-            if (first != null) {
+            if (first == null) {
+                last =null;
+            } else {
                 first.setPrevious(null);
             }
             size--;
@@ -148,7 +150,7 @@ public class FastRemovalDequeue<T> {
 
     /**
      * Removes the last element of the list and returns its content.
-     * 
+     *
      * @return the content of the last element of the list.
      **/
     public synchronized T pop() {
@@ -157,7 +159,9 @@ public class FastRemovalDequeue<T> {
             Entry element = last;
             last = last.getPrevious();
             content = element.getContent();
-            if (last != null) {
+            if (last == null) {
+                first = null;
+            } else {
                 last.setNext(null);
             }
             size--;
@@ -194,7 +198,7 @@ public class FastRemovalDequeue<T> {
      *
      * Could also be implemented as remove() and
      * push(), but explicitely coding might be a bit faster.
-     * 
+     *
      * @param element the entry to move in front.
      * */
     public synchronized void moveFirst(final Entry element) {
@@ -220,7 +224,7 @@ public class FastRemovalDequeue<T> {
      *
      * Could also be implemented as remove() and
      * unpop(), but explicitely coding might be a bit faster.
-     * 
+     *
      * @param element the entry to move to the back.
      * */
     public synchronized void moveLast(final Entry element) {
@@ -287,7 +291,7 @@ public class FastRemovalDequeue<T> {
         public final void clearReplaced() {
             this.replaced = null;
         }
-        
+
         private final Entry getNext() {
             return next;
         }

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1186054&r1=1186053&r2=1186054&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Wed Oct 19 09:43:22 2011
@@ -126,6 +126,14 @@
       </fix>
     </changelog>
   </subsection>
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        Correct possible (but very small) memory leak when using maxLoadedJsps
+        to limit the number of JSPs loaded at any one time. (markt) 
+      </fix>
+    </changelog>
+  </subsection>
   <subsection name="Web applications">
     <changelog>
       <add>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org