@@ -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 {