[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