@Test publicvoid testViewDuplicate() {
testReachability(ByteBuffer.allocateDirect(16384),
(Buffer b) -> b instanceof ByteBuffer
? ((ByteBuffer) b).asIntBuffer()
: b.duplicate()
);
}
@Test publicvoid testViewSlice() {
testReachability(ByteBuffer.allocateDirect(16384),
(Buffer b) -> b instanceof ByteBuffer
? ((ByteBuffer) b).asIntBuffer()
: b.slice()
);
}
<T> void testReachability(T t, UnaryOperator<T> b) {
WeakReference<T> root = new WeakReference<>(t);
ReferenceQueue<Object> queue = new ReferenceQueue<>();
List<WeakReference<T>> refs = new ArrayList<>(); for (int i = 0; i < 1000; i++) {
t = b.apply(t);
refs.add(new WeakReference<>(t, queue));
}
t = b.apply(t);
// Some or all of the intermediate values must be GC'ed Assert.assertTrue(collected); // The root should never be GC'ed Assert.assertNotNull(root.get());
Reference.reachabilityFence(t);
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.