< prev index next >

src/java.base/share/classes/java/nio/Bits.java

Print this page

        

*** 30,39 **** --- 30,41 ---- import jdk.internal.misc.JavaNioAccess; import jdk.internal.misc.JavaLangRefAccess; import jdk.internal.misc.SharedSecrets; import jdk.internal.misc.Unsafe; import jdk.internal.misc.VM; + import jdk.internal.ref.CleanerFactory; + import jdk.internal.ref.CleanerImpl; /** * Access to bits, native and otherwise. */
*** 624,637 **** return; } final JavaLangRefAccess jlra = SharedSecrets.getJavaLangRefAccess(); ! // retry while helping enqueue pending Reference objects ! // which includes executing pending Cleaner(s) which includes ! // Cleaner(s) that free direct buffer memory ! while (jlra.tryHandlePendingReference()) { if (tryReserveMemory(size, cap)) { return; } } --- 626,641 ---- return; } final JavaLangRefAccess jlra = SharedSecrets.getJavaLangRefAccess(); ! // retry while: ! // - helping enqueue pending Reference objects which includes Cleanable(s) ! // - helping processing the queue of Cleanable(s) which includes the ones ! // that free direct buffer memory ! while (jlra.tryHandlePendingReference() | // use non-short-circuit or ! CleanerImpl.getCleanerImpl(CleanerFactory.cleaner()).drainQueue()) { if (tryReserveMemory(size, cap)) { return; } }
*** 649,659 **** return; } if (sleeps >= MAX_SLEEPS) { break; } ! if (!jlra.tryHandlePendingReference()) { try { Thread.sleep(sleepTime); sleepTime <<= 1; sleeps++; } catch (InterruptedException e) { --- 653,664 ---- return; } if (sleeps >= MAX_SLEEPS) { break; } ! if (!jlra.tryHandlePendingReference() & // use non-short-circuit and ! !CleanerImpl.getCleanerImpl(CleanerFactory.cleaner()).drainQueue()) { try { Thread.sleep(sleepTime); sleepTime <<= 1; sleeps++; } catch (InterruptedException e) {
< prev index next >