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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org