33 */
34
35 import java.io.*;
36 import java.lang.ref.Reference;
37 import java.lang.ref.ReferenceQueue;
38 import java.lang.ref.WeakReference;
39 import java.lang.reflect.Constructor;
40 import java.net.URL;
41 import java.net.URLClassLoader;
42
43 public class SubclassGC {
44 private static final long TIMEOUT = 1000;
45
46 public static final void main(String[] args) throws Exception {
47 System.err.println("\n Regression test for bug 6232010\n");
48 if (System.getSecurityManager() == null) {
49 System.setSecurityManager(new SecurityManager());
50 }
51
52 ClassLoader systemLoader = ClassLoader.getSystemClassLoader();
53 ClassLoader loader = new URLClassLoader(((URLClassLoader) systemLoader).getURLs(),
54 systemLoader.getParent());
55 Class<? extends ObjectOutputStream> cl =
56 Class.forName(SubclassOfOOS.class.getName(), false,
57 loader).asSubclass(ObjectOutputStream.class);
58
59 Constructor<? extends ObjectOutputStream> cons =
60 cl.getConstructor(OutputStream.class);
61
62 OutputStream os = new ByteArrayOutputStream();
63 ObjectOutputStream obj = cons.newInstance(os);
64
65 final ReferenceQueue<Class<?>> queue = new ReferenceQueue<Class<?>>();
66 WeakReference<Class<?>> ref = new WeakReference<Class<?>>(cl, queue);
67
68 cl = null;
69 obj = null;
70 loader = null;
71 cons = null;
72 systemLoader = null;
73
|
33 */
34
35 import java.io.*;
36 import java.lang.ref.Reference;
37 import java.lang.ref.ReferenceQueue;
38 import java.lang.ref.WeakReference;
39 import java.lang.reflect.Constructor;
40 import java.net.URL;
41 import java.net.URLClassLoader;
42
43 public class SubclassGC {
44 private static final long TIMEOUT = 1000;
45
46 public static final void main(String[] args) throws Exception {
47 System.err.println("\n Regression test for bug 6232010\n");
48 if (System.getSecurityManager() == null) {
49 System.setSecurityManager(new SecurityManager());
50 }
51
52 ClassLoader systemLoader = ClassLoader.getSystemClassLoader();
53 URL testClassesURL = new File(System.getProperty("test.classes")).toURI().toURL();
54 ClassLoader loader = new URLClassLoader(new URL[] { testClassesURL } ,
55 systemLoader.getParent());
56 Class<? extends ObjectOutputStream> cl =
57 Class.forName(SubclassOfOOS.class.getName(), false,
58 loader).asSubclass(ObjectOutputStream.class);
59
60 Constructor<? extends ObjectOutputStream> cons =
61 cl.getConstructor(OutputStream.class);
62
63 OutputStream os = new ByteArrayOutputStream();
64 ObjectOutputStream obj = cons.newInstance(os);
65
66 final ReferenceQueue<Class<?>> queue = new ReferenceQueue<Class<?>>();
67 WeakReference<Class<?>> ref = new WeakReference<Class<?>>(cl, queue);
68
69 cl = null;
70 obj = null;
71 loader = null;
72 cons = null;
73 systemLoader = null;
74
|