TestEarlyGC.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. public class TestEarlyGC extends ClassLoader {
  2. static TestEarlyGC[] a = new TestEarlyGC[10];
  3. // Jeff Sturm writes:
  4. // Reconstructed from bytecode (and memory). The singleton pattern
  5. // is used as a class finalizer.
  6. // public class C {
  7. // private static C c;
  8. // public C() {
  9. // c = this;
  10. // }
  11. // protected void finalize() {
  12. // System.out.println("finalized");
  13. // }
  14. // }
  15. byte[] code = {
  16. -54,-2,-70,-66,0,3,0,45,0,32,1,0,1,67,7,0,
  17. 1,1,0,16,106,97,118,97,47,108,97,110,103,47,79,98,
  18. 106,101,99,116,7,0,3,1,0,1,99,1,0,3,76,67,
  19. 59,1,0,6,60,105,110,105,116,62,1,0,3,40,41,86,
  20. 1,0,4,67,111,100,101,12,0,7,0,8,10,0,4,0,
  21. 10,12,0,5,0,6,9,0,2,0,12,1,0,15,76,105,
  22. 110,101,78,117,109,98,101,114,84,97,98,108,101,1,0,8,
  23. 102,105,110,97,108,105,122,101,1,0,16,106,97,118,97,47,
  24. 108,97,110,103,47,83,121,115,116,101,109,7,0,16,1,0,
  25. 3,111,117,116,1,0,21,76,106,97,118,97,47,105,111,47,
  26. 80,114,105,110,116,83,116,114,101,97,109,59,12,0,18,0,
  27. 19,9,0,17,0,20,1,0,9,102,105,110,97,108,105,122,
  28. 101,100,8,0,22,1,0,19,106,97,118,97,47,105,111,47,
  29. 80,114,105,110,116,83,116,114,101,97,109,7,0,24,1,0,
  30. 7,112,114,105,110,116,108,110,1,0,21,40,76,106,97,118,
  31. 97,47,108,97,110,103,47,83,116,114,105,110,103,59,41,86,
  32. 12,0,26,0,27,10,0,25,0,28,1,0,10,83,111,117,
  33. 114,99,101,70,105,108,101,1,0,6,67,46,106,97,118,97,
  34. 0,33,0,2,0,4,0,0,0,1,0,10,0,5,0,6,
  35. 0,0,0,2,0,1,0,7,0,8,0,1,0,9,0,0,
  36. 0,33,0,1,0,1,0,0,0,9,42,-73,0,11,42,-77,
  37. 0,13,-79,0,0,0,1,0,14,0,0,0,6,0,1,0,
  38. 4,0,5,0,4,0,15,0,8,0,1,0,9,0,0,0,
  39. 33,0,2,0,1,0,0,0,9,-78,0,21,18,23,-74,0,
  40. 29,-79,0,0,0,1,0,14,0,0,0,6,0,1,0,0,
  41. 0,9,0,1,0,30,0,0,0,2,0,31
  42. };
  43. TestEarlyGC() throws Throwable {
  44. defineClass("C", code, 0, code.length).newInstance();
  45. }
  46. public static void main(String[] args) {
  47. Runtime r = Runtime.getRuntime();
  48. try {
  49. for (int n = 0; n < a.length; n++) {
  50. a[n] = new TestEarlyGC();
  51. r.gc();
  52. r.runFinalization();
  53. Thread.yield();
  54. }
  55. } catch (Throwable t) {
  56. t.printStackTrace();
  57. }
  58. }
  59. }