mirror of
https://github.com/2003scape/deep-c-rsc.git
synced 2024-03-22 05:49:51 -04:00
131 lines
4.3 KiB
Java
131 lines
4.3 KiB
Java
import java.lang.ref.*;
|
|
import java.util.*;
|
|
class RefsTest
|
|
{
|
|
static Object o;
|
|
protected void finalize()
|
|
{
|
|
o = null;
|
|
}
|
|
|
|
public static void main(String[] args)
|
|
{
|
|
Runtime.getRuntime().runFinalizersOnExit(true);
|
|
for (int i = 0; i < 50; i++)
|
|
{
|
|
Object x = new RefsTest();
|
|
ReferenceQueue q = new ReferenceQueue();
|
|
Vector v = new Vector();
|
|
for (int j = 0; j < 20; j++)
|
|
{
|
|
for (int k = 0; k < 20; k++)
|
|
{
|
|
|
|
new WeakReference("");
|
|
new WeakReference(new String(""));
|
|
new WeakReference(new RefsTest());
|
|
new WeakReference(x);
|
|
new WeakReference(args);
|
|
|
|
new WeakReference("", new ReferenceQueue());
|
|
new WeakReference(new String(""), new ReferenceQueue());
|
|
new WeakReference(new RefsTest(), new ReferenceQueue());
|
|
new WeakReference(args, new ReferenceQueue());
|
|
new WeakReference(x, new ReferenceQueue());
|
|
|
|
new WeakReference("", q);
|
|
new WeakReference(new String(""), q);
|
|
new WeakReference(new RefsTest(), q);
|
|
new WeakReference(x, q);
|
|
|
|
v.add(new WeakReference(""));
|
|
v.add(new WeakReference(new String("")));
|
|
v.add(new WeakReference(new RefsTest()));
|
|
v.add(new WeakReference(x));
|
|
v.add(new WeakReference(args));
|
|
|
|
v.add(new WeakReference("", new ReferenceQueue()));
|
|
v.add(new WeakReference(new String(""), new ReferenceQueue()));
|
|
v.add(new WeakReference(new RefsTest(), new ReferenceQueue()));
|
|
v.add(new WeakReference(x, new ReferenceQueue()));
|
|
v.add(new WeakReference(args, new ReferenceQueue()));
|
|
|
|
v.add(new WeakReference("", q));
|
|
v.add(new WeakReference(new String(""), q));
|
|
v.add(new WeakReference(new RefsTest(), q));
|
|
v.add(new WeakReference(x, q));
|
|
|
|
new SoftReference("");
|
|
new SoftReference(new String(""));
|
|
new SoftReference(new RefsTest());
|
|
new SoftReference(x);
|
|
new SoftReference(args);
|
|
|
|
new SoftReference("", new ReferenceQueue());
|
|
new SoftReference(new String(""), new ReferenceQueue());
|
|
new SoftReference(new RefsTest(), new ReferenceQueue());
|
|
new SoftReference(x, new ReferenceQueue());
|
|
new SoftReference(args, new ReferenceQueue());
|
|
|
|
new SoftReference("", q);
|
|
new SoftReference(new String(""), q);
|
|
new SoftReference(new RefsTest(), q);
|
|
new SoftReference(x, q);
|
|
|
|
v.add(new SoftReference(""));
|
|
v.add(new SoftReference(new String("")));
|
|
v.add(new SoftReference(new RefsTest()));
|
|
v.add(new SoftReference(x));
|
|
v.add(new SoftReference(args));
|
|
|
|
v.add(new SoftReference("", new ReferenceQueue()));
|
|
v.add(new SoftReference(new String(""), new ReferenceQueue()));
|
|
v.add(new SoftReference(new RefsTest(), new ReferenceQueue()));
|
|
v.add(new SoftReference(x, new ReferenceQueue()));
|
|
v.add(new SoftReference(args, new ReferenceQueue()));
|
|
|
|
v.add(new SoftReference("", q));
|
|
v.add(new SoftReference(new String(""), q));
|
|
v.add(new SoftReference(new RefsTest(), q));
|
|
v.add(new SoftReference(x, q));
|
|
|
|
new PhantomReference("", new ReferenceQueue());
|
|
new PhantomReference(new String(""), new ReferenceQueue());
|
|
new PhantomReference(new RefsTest(), new ReferenceQueue());
|
|
new PhantomReference(x, new ReferenceQueue());
|
|
new PhantomReference(args, new ReferenceQueue());
|
|
|
|
new PhantomReference("", q);
|
|
new PhantomReference(new String(""), q);
|
|
new PhantomReference(new RefsTest(), q);
|
|
new PhantomReference(x, q);
|
|
|
|
v.add(new PhantomReference("", new ReferenceQueue()));
|
|
v.add(new PhantomReference(new String(""), new ReferenceQueue()));
|
|
v.add(new PhantomReference(new RefsTest(), new ReferenceQueue()));
|
|
v.add(new PhantomReference(x, new ReferenceQueue()));
|
|
v.add(new PhantomReference(args, new ReferenceQueue()));
|
|
|
|
v.add(new PhantomReference("", q));
|
|
v.add(new PhantomReference(new String(""), q));
|
|
v.add(new PhantomReference(new RefsTest(), q));
|
|
v.add(new PhantomReference(x, q));
|
|
|
|
/* */
|
|
new WeakReference(args, q);
|
|
v.add(new WeakReference(args, q));
|
|
new SoftReference(args, q);
|
|
v.add(new SoftReference(args, q));
|
|
new PhantomReference(args, q);
|
|
v.add(new PhantomReference(args, q));
|
|
}
|
|
System.gc();
|
|
System.out.println((Runtime.getRuntime().totalMemory() -
|
|
Runtime.getRuntime().freeMemory()) >> 10);
|
|
// the maximum value (for each outer iteration) should be nearly stable
|
|
}
|
|
v.clear();
|
|
System.gc();
|
|
}
|
|
}
|
|
} |