[jboss-cvs] JBossAS SVN: r61321 - trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Mar 14 00:23:21 EDT 2007
Author: bstansberry at jboss.com
Date: 2007-03-14 00:23:21 -0400 (Wed, 14 Mar 2007)
New Revision: 61321
Modified:
trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java
Log:
Improve memory filling algorithm
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 2007-03-14 03:44:55 UTC (rev 61320)
+++ trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java 2007-03-14 04:23:21 UTC (rev 61321)
@@ -123,9 +123,19 @@
}
leakAnalyzer.heapSnapshot("snapshot", "mem");
+
+ if (weakReferenceOnLoader.get() == null)
+ {
+ return null;
+ }
HashMap datapoints = leakAnalyzer.createIndexMatrix();
+ if (weakReferenceOnLoader.get() == null)
+ {
+ return null;
+ }
+
String report = leakAnalyzer.exploreObjectReferences(datapoints, weakReferenceOnLoader.get(), 18, true, false);
log.info(report);
if (reportHTMLFile != null)
@@ -136,8 +146,7 @@
realoutput.println(report);
realoutput.close();
}
-
-
+
leakAnalyzer.forceGC();
}
else
@@ -148,6 +157,9 @@
if (weakReferenceOnLoader.get() != null)
fillMemory(weakReferenceOnLoader);
+
+ if (weakReferenceOnLoader.get() != null)
+ fillMemory(weakReferenceOnLoader);
}
return (ClassLoader) weakReferenceOnLoader.get();
@@ -155,25 +167,39 @@
private void fillMemory(WeakReference ref)
{
- int bytz = 2 * 1024;
- while(true) {
+ Runtime rt = Runtime.getRuntime();
+
+ for (int i = 0; i < 15; i++)
+ {
+ int toAdd = Math.min(i, 4);
System.gc();
if (ref.get() == null)
break;
- // create garbage:
+ // 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 bucket = create / 1000;
+ log.info("Filling " + (95 + toAdd) + "% of free memory. Free memory=" + avail +
+ " Total Memory=" + rt.totalMemory() + " Max Memory=" + rt.maxMemory());
+
try
{
- byte[] b = new byte[bytz];
- bytz = bytz * 2;
+ byte[][] bytez = new byte[1000][];
+ for (int j = 0; j < bytez.length; j++)
+ bytez[j] = new byte[bucket];
}
catch (Throwable t)
{
System.gc();
break;
}
- }
+ }
+
+ if (ref.get() != null)
+ System.gc();
}
public void removeClassLoader(String key)
More information about the jboss-cvs-commits
mailing list