|
48 | 48 | import java.util.Arrays; |
49 | 49 | import java.util.HashMap; |
50 | 50 | import java.util.HashSet; |
51 | | -import java.util.LinkedList; |
52 | 51 | import java.util.Set; |
53 | 52 | import java.util.WeakHashMap; |
54 | 53 | import java.util.concurrent.ConcurrentHashMap; |
@@ -205,20 +204,10 @@ private static HandleContext getContext() { |
205 | 204 |
|
206 | 205 | public abstract static class IdReference<T> extends WeakReference<T> { |
207 | 206 |
|
208 | | - private boolean collected = false; |
209 | | - |
210 | 207 | public IdReference(HandleContext handleContext, T referent) { |
211 | 208 | super(referent, handleContext.referenceQueue); |
212 | 209 | } |
213 | 210 |
|
214 | | - public boolean isCollected() { |
215 | | - return collected; |
216 | | - } |
217 | | - |
218 | | - public IdReference<T> setCollected() { |
219 | | - this.collected = true; |
220 | | - return this; |
221 | | - } |
222 | 211 | } |
223 | 212 |
|
224 | 213 | /** |
@@ -448,23 +437,8 @@ public static int pollReferenceQueue() { |
448 | 437 | } |
449 | 438 | } |
450 | 439 | try { |
451 | | - LinkedList<IdReference<?>> manualCleanupQueue = new LinkedList<>(); |
452 | | - for (IdReference<?> ref : handleContext.nativeLookup.values()) { |
453 | | - if (ref != null && ref.refersTo(null)) { |
454 | | - manualCleanupQueue.add(ref); |
455 | | - } |
456 | | - } |
457 | | - manuallyCollected = manualCleanupQueue.size(); |
458 | 440 | while (true) { |
459 | | - Object entry; |
460 | | - if (!manualCleanupQueue.isEmpty()) { |
461 | | - entry = manualCleanupQueue.pop().setCollected(); |
462 | | - } else { |
463 | | - entry = queue.poll(); |
464 | | - if (entry instanceof IdReference<?> ref && ref.isCollected()) { |
465 | | - continue; |
466 | | - } |
467 | | - } |
| 441 | + Object entry = queue.poll(); |
468 | 442 | if (entry == null) { |
469 | 443 | if (count > 0) { |
470 | 444 | assert handleContext.referenceQueuePollActive; |
|
0 commit comments