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