[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