src/share/classes/java/lang/ref/Reference.java

Print this page

        

@@ -130,10 +130,11 @@
             super(g, name);
         }
 
         public void run() {
             for (;;) {
+                try {
                 Reference<Object> r;
                 synchronized (lock) {
                     if (pending != null) {
                         r = pending;
                         pending = r.discovered;

@@ -167,10 +168,12 @@
                     continue;
                 }
 
                 ReferenceQueue<Object> q = r.queue;
                 if (q != ReferenceQueue.NULL) q.enqueue(r);
+
+                } catch (OutOfMemoryError x) { }
             }
         }
     }
 
     static {