[jboss-cvs] JBossAS SVN: r88183 - branches/Branch_5_x/testsuite/src/main/org/jboss/test/classloader/leak/clstore.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue May 5 00:19:03 EDT 2009


Author: bstansberry at jboss.com
Date: 2009-05-05 00:19:03 -0400 (Tue, 05 May 2009)
New Revision: 88183

Modified:
   branches/Branch_5_x/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java
Log:
[JBAS-6864] Tweak fill memory algorithm
Generics cleanup

Modified: branches/Branch_5_x/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java
===================================================================
--- branches/Branch_5_x/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java	2009-05-05 04:18:12 UTC (rev 88182)
+++ branches/Branch_5_x/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java	2009-05-05 04:19:03 UTC (rev 88183)
@@ -31,9 +31,11 @@
 import java.io.Serializable;
 import java.lang.ref.WeakReference;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.jboss.logging.Logger;
+import org.jboss.profiler.jvmti.ReferenceDataPoint;
 
 public class ClassLoaderStore
 {
@@ -41,7 +43,7 @@
    
    private static ClassLoaderStore instance = new ClassLoaderStore();
    
-   private final Map classloaders = new HashMap();
+   private final Map<String, WeakReference<ClassLoader>> classloaders = new HashMap<String, WeakReference<ClassLoader>>();
 
    private final int depth = Integer.parseInt(System.getProperty("jboss.classloader.leak.test.depth", "12"));
 
@@ -64,14 +66,14 @@
          log.debug("Parent is " + parent);
          parent = parent.getParent();
       }
-      WeakReference ref = new WeakReference(loader);
+      WeakReference<ClassLoader> ref = new WeakReference<ClassLoader>(loader);
       classloaders.put(key, ref);
    }
    
    public ClassLoader getClassLoader(String key, boolean forceGC, String reportFile)
    {
       ClassLoader result = null;
-      WeakReference ref = (WeakReference) classloaders.get(key);
+      WeakReference<ClassLoader> ref = classloaders.get(key);
       if (ref != null)
       {
          result = (ClassLoader) ref.get();
@@ -101,7 +103,7 @@
     * @param reportHTMLFile the report file 
     * @throws Exception
     */
-   private ClassLoader getClassLoader(WeakReference weakReferenceOnLoader, String reportHTMLFile) throws Exception
+   private ClassLoader getClassLoader(WeakReference<ClassLoader> weakReferenceOnLoader, String reportHTMLFile) throws Exception
    {
       LeakAnalyzer leakAnalyzer = null;
       try
@@ -143,7 +145,8 @@
          
          Thread.sleep(20);
             
-         HashMap datapoints = leakAnalyzer.createIndexMatrix();
+         @SuppressWarnings("unchecked")
+         HashMap<Long, List<ReferenceDataPoint>> datapoints = leakAnalyzer.createIndexMatrix();
          
          if (weakReferenceOnLoader.get() == null)
          {
@@ -184,7 +187,7 @@
       return (ClassLoader) weakReferenceOnLoader.get();
    }
    
-   private void fillMemory(WeakReference ref)
+   private void fillMemory(WeakReference<ClassLoader> ref)
    {
       Runtime rt = Runtime.getRuntime();
       int[] adds = { 0, 10, 20, 30, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 };
@@ -199,37 +202,45 @@
           
           // create garbage, filling a larger and larger % of
           // free memory on each loop
+          byte[][] bytez =  new byte[10000][];
           long avail = rt.freeMemory();
           int create = (int) (avail / 1000 * (950 + toAdd));
           String pct = (95 + (toAdd/10)) + "." + (toAdd - ((toAdd/10) * 10));
-          int bucket = create / 1000;
+          int bucket = create / 10000;
           log.info("Filling " + pct + "% of free memory. Free memory=" + avail + 
                    " Total Memory=" + rt.totalMemory() + " Max Memory=" + rt.maxMemory());
           
           try
           {
-             byte[][] bytez =  new byte[1000][];
              for (int j = 0; j < bytez.length; j++)
+             {
                 bytez[j] = new byte[bucket];
+                if (j % 100 == 0 && ref.get() == null)
+                {
+                   return;
+                }
+             }
           }
           catch (Throwable t)
           {
-             log.warn("Caught throwable filling memory: " + t);
+             bytez = null;
              System.gc();
              System.runFinalization();
+             log.warn("Caught throwable filling memory: " + t);
              break;
           }       
           finally
           {
+             bytez = null;
              // Sleep a bit to allow CPU to do work like exchange cluster PING responses
              try
              {
                 Thread.sleep(20);
              }
-             catch (InterruptedException ignored)
+             catch (InterruptedException e)
              {
-               log.warn("Interrupted");
-               break;
+                // TODO Auto-generated catch block
+                e.printStackTrace();
              }
           }
       }




More information about the jboss-cvs-commits mailing list