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 2006/10/19 01:32:38 UTC

svn commit: r465418 - in /tomcat/container/tc5.5.x: catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java webapps/docs/changelog.xml

Author: markt
Date: Wed Oct 18 16:32:37 2006
New Revision: 465418

URL: http://svn.apache.org/viewvc?view=rev&rev=465418
Log:
Fix bug 38048. memory leak with EL in JSPs. Patch provided by Taras Tielkes.

Modified:
    tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
    tomcat/container/tc5.5.x/webapps/docs/changelog.xml

Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java?view=diff&rev=465418&r1=465417&r2=465418
==============================================================================
--- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java (original)
+++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java Wed Oct 18 16:32:37 2006
@@ -41,7 +41,10 @@
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
 import java.util.Vector;
 import java.util.jar.Attributes;
 import java.util.jar.JarEntry;
@@ -1630,7 +1633,10 @@
             }
         }
         
-         // Clear the IntrospectionUtils cache.
+        // Remove entries for this webapp from the JSP EL BeanInfo cache
+        cleanElCache();
+        
+        // Clear the IntrospectionUtils cache.
         IntrospectionUtils.clear();
         
         // Clear the classloader reference in common-logging
@@ -1642,6 +1648,34 @@
     }
 
 
+    protected void cleanElCache() {
+        try {
+            Class managerClass =
+                Class.forName("org.apache.commons.el.BeanInfoManager");
+            Field cacheField =
+                managerClass.getDeclaredField("mBeanInfoManagerByClass");
+            cacheField.setAccessible(true);
+            Map map = (Map) cacheField.get(null);
+            
+            Set victims = new HashSet();
+                
+            for (Iterator i = map.keySet().iterator(); i.hasNext();) {
+                Class cachedClass = (Class) i.next();
+                if(loadedByThisOrChild(cachedClass)) {
+                    victims.add(cachedClass);
+                }
+            }
+            
+            map.keySet().removeAll(victims);
+            
+            } catch (Throwable t) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Could not clean EL cache", t);
+            }
+        }
+    }
+    
+    
     protected void nullInstance(Object instance) {
         if (instance == null) {
             return;

Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?view=diff&rev=465418&r1=465417&r2=465418
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Wed Oct 18 16:32:37 2006
@@ -79,6 +79,10 @@
         Patch provided by Tristan Marly. (markt)
       </fix>
       <fix>
+        <bug>38048</bug>: Fix memory leak assoaciated with use of expression
+        language in JSPs. Patch provided by Taras Tielkes. (markt)
+      </fix>
+      <fix>
         <bug>40633</bug>: Remove references to the DefaultContext from the
         documentation. (markt)
       </fix>



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


Re: svn commit: r465418 - in /tomcat/container/tc5.5.x: catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java webapps/docs/changelog.xml

Posted by Remy Maucherat <re...@apache.org>.
Filip Hanik - Dev Lists wrote:
> is this existent in 6.0 as well?

It's possible there are leaks, but we'll have to find them, as the 
implementation is completely different.

Rémy

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


Re: svn commit: r465418 - in /tomcat/container/tc5.5.x: catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java webapps/docs/changelog.xml

Posted by Filip Hanik - Dev Lists <de...@hanik.com>.
is this existent in 6.0 as well?


markt@apache.org wrote:
> Author: markt
> Date: Wed Oct 18 16:32:37 2006
> New Revision: 465418
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=465418
> Log:
> Fix bug 38048. memory leak with EL in JSPs. Patch provided by Taras Tielkes.
>
> Modified:
>     tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
>     tomcat/container/tc5.5.x/webapps/docs/changelog.xml
>
> Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
> URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java?view=diff&rev=465418&r1=465417&r2=465418
> ==============================================================================
> --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java (original)
> +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java Wed Oct 18 16:32:37 2006
> @@ -41,7 +41,10 @@
>  import java.util.ArrayList;
>  import java.util.Enumeration;
>  import java.util.HashMap;
> +import java.util.HashSet;
>  import java.util.Iterator;
> +import java.util.Map;
> +import java.util.Set;
>  import java.util.Vector;
>  import java.util.jar.Attributes;
>  import java.util.jar.JarEntry;
> @@ -1630,7 +1633,10 @@
>              }
>          }
>          
> -         // Clear the IntrospectionUtils cache.
> +        // Remove entries for this webapp from the JSP EL BeanInfo cache
> +        cleanElCache();
> +        
> +        // Clear the IntrospectionUtils cache.
>          IntrospectionUtils.clear();
>          
>          // Clear the classloader reference in common-logging
> @@ -1642,6 +1648,34 @@
>      }
>  
>  
> +    protected void cleanElCache() {
> +        try {
> +            Class managerClass =
> +                Class.forName("org.apache.commons.el.BeanInfoManager");
> +            Field cacheField =
> +                managerClass.getDeclaredField("mBeanInfoManagerByClass");
> +            cacheField.setAccessible(true);
> +            Map map = (Map) cacheField.get(null);
> +            
> +            Set victims = new HashSet();
> +                
> +            for (Iterator i = map.keySet().iterator(); i.hasNext();) {
> +                Class cachedClass = (Class) i.next();
> +                if(loadedByThisOrChild(cachedClass)) {
> +                    victims.add(cachedClass);
> +                }
> +            }
> +            
> +            map.keySet().removeAll(victims);
> +            
> +            } catch (Throwable t) {
> +                if (log.isDebugEnabled()) {
> +                    log.debug("Could not clean EL cache", t);
> +            }
> +        }
> +    }
> +    
> +    
>      protected void nullInstance(Object instance) {
>          if (instance == null) {
>              return;
>
> Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
> URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?view=diff&rev=465418&r1=465417&r2=465418
> ==============================================================================
> --- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
> +++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Wed Oct 18 16:32:37 2006
> @@ -79,6 +79,10 @@
>          Patch provided by Tristan Marly. (markt)
>        </fix>
>        <fix>
> +        <bug>38048</bug>: Fix memory leak assoaciated with use of expression
> +        language in JSPs. Patch provided by Taras Tielkes. (markt)
> +      </fix>
> +      <fix>
>          <bug>40633</bug>: Remove references to the DefaultContext from the
>          documentation. (markt)
>        </fix>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>
>   


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