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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Mar 15 14:16:28 EDT 2007


Author: bstansberry at jboss.com
Date: 2007-03-15 14:16:28 -0400 (Thu, 15 Mar 2007)
New Revision: 61343

Modified:
   branches/Branch_4_2/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java
Log:
Further improve memory-filling algorithm

Modified: branches/Branch_4_2/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java
===================================================================
--- branches/Branch_4_2/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java	2007-03-15 17:59:51 UTC (rev 61342)
+++ branches/Branch_4_2/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java	2007-03-15 18:16:28 UTC (rev 61343)
@@ -21,15 +21,19 @@
  */
 package org.jboss.test.classloader.leak.clstore;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.io.PrintStream;
+import java.io.Serializable;
 import java.lang.ref.WeakReference;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.jboss.logging.Logger;
-import org.jboss.profiler.jvmti.JVMTIInterface;
 
 public class ClassLoaderStore
 {
@@ -168,10 +172,10 @@
    private void fillMemory(WeakReference ref)
    {
       Runtime rt = Runtime.getRuntime();
-      
-      for (int i = 0; i < 15; i++) 
+      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 = Math.min(i, 4);
+          int toAdd = adds[i];
           System.gc();
           
           if (ref.get() == null)
@@ -180,9 +184,10 @@
           // create garbage, filling a larger and larger % of
           // free memory on each loop
           long avail = rt.freeMemory();
-          int create = (int) (avail / 100 * (95 + toAdd));
+          int create = (int) (avail / 1000 * (950 + toAdd));
+          String pct = (95 + (toAdd/10)) + "." + (toAdd - ((toAdd/10) * 10));
           int bucket = create / 1000;
-          log.info("Filling " + (95 + toAdd) + "% of free memory. Free memory=" + avail + 
+          log.info("Filling " + pct + "% of free memory. Free memory=" + avail + 
                    " Total Memory=" + rt.totalMemory() + " Max Memory=" + rt.maxMemory());
           
           try
@@ -198,6 +203,23 @@
           }
       }
       
+      try
+      {
+         ByteArrayOutputStream byteout = new ByteArrayOutputStream();
+         ObjectOutputStream out = new ObjectOutputStream(byteout);
+        
+         out.writeObject(new Dummy());
+        
+         ByteArrayInputStream byteInput = new ByteArrayInputStream(byteout.toByteArray());
+         ObjectInputStream input = new ObjectInputStream(byteInput);
+         input.readObject();
+        
+      }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+      }
+      
       if (ref.get() != null)
          System.gc();
    }
@@ -206,4 +228,10 @@
    {
       classloaders.remove(key);
    }
+   
+   /** Used just to serialize anything and release SoftCache on java Serialization */
+   private static class Dummy implements Serializable
+   {
+        private static final long serialVersionUID = 1L;
+   }
 }




More information about the jboss-cvs-commits mailing list