[jboss-cvs] JBossAS SVN: r109273 - trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 11 12:45:42 EST 2010


Author: smarlow at redhat.com
Date: 2010-11-11 12:45:41 -0500 (Thu, 11 Nov 2010)
New Revision: 109273

Modified:
   trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java
Log:
JBAS-8613 only fill memory if there is a classloader leak, otherwise force full gc

Modified: trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java	2010-11-11 17:39:22 UTC (rev 109272)
+++ trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java	2010-11-11 17:45:41 UTC (rev 109273)
@@ -127,7 +127,7 @@
             return null;
          }
          
-         fillMemory(weakReferenceOnLoader);
+         fillMemory(weakReferenceOnLoader, leakAnalyzer);
          
          if (weakReferenceOnLoader.get() == null)
          {
@@ -180,25 +180,39 @@
          Thread.sleep(1000);
          
          if (weakReferenceOnLoader.get() != null)
-            fillMemory(weakReferenceOnLoader);
+            fillMemory(weakReferenceOnLoader, leakAnalyzer);
          
          if (weakReferenceOnLoader.get() != null)
-            fillMemory(weakReferenceOnLoader);
+            fillMemory(weakReferenceOnLoader, leakAnalyzer);
       }
       
       return (ClassLoader) weakReferenceOnLoader.get();
    }
-   
-   private void fillMemory(WeakReference<ClassLoader> ref)
+
+   /**
+    * Request a full gc 
+    */
+   private void forceFullGCAndFinalize(LeakAnalyzer leakAnalyzer)
    {
+      leakAnalyzer.forceGC();
+      // give more hints for gc + finalizers to run
+      for(int looper =0; looper < 10; looper++)
+      {
+        System.gc();
+        System.runFinalization();
+      }
+
+   }
+    
+   private void fillMemory(WeakReference<ClassLoader> ref, LeakAnalyzer leakAnalyzer)
+   {
       Runtime rt = Runtime.getRuntime();
       int[] adds = { 0, 10, 20, 30, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 };
       for (int i = 0; i < adds.length; i++) 
       {
           int toAdd = adds[i];
-          System.gc();
-          System.runFinalization();
-          
+          forceFullGCAndFinalize(leakAnalyzer);
+
           if (ref.get() == null)
              break;
           
@@ -226,8 +240,7 @@
           catch (Throwable t)
           {
              bytez = null;
-             System.gc();
-             System.runFinalization();
+             forceFullGCAndFinalize(leakAnalyzer);
              log.warn("Caught throwable filling memory: " + t);
              break;
           }       
@@ -267,8 +280,7 @@
       
       if (ref.get() != null)
       {
-         System.gc();
-         System.runFinalization();
+         forceFullGCAndFinalize(leakAnalyzer);
       }
    }
    



More information about the jboss-cvs-commits mailing list