@@ -130,10 +130,11 @@ private void bufferCleaner(final DirectBuffer buffer) {
130130 if ("1.8" .equals (specVer )) {
131131 // On Java 8, but also compiles on Java 11.
132132 try {
133- final Class <?> cls = Class .forName ("sun.misc.Cleaner" );
134- final Object cleaner = buffer .cleaner ();
133+ final Class <?> clsCleaner = Class .forName ("sun.misc.Cleaner" );
134+ final Method cleanerMethod = DirectBuffer .class .getMethod ("cleaner" );
135+ final Object cleaner = cleanerMethod .invoke (buffer );
135136 if (cleaner != null ) {
136- final Method cleanMethod = cls .getMethod ("clean" );
137+ final Method cleanMethod = clsCleaner .getMethod ("clean" );
137138 cleanMethod .invoke (cleaner );
138139 }
139140 } catch (ReflectiveOperationException e ) {
@@ -142,9 +143,9 @@ private void bufferCleaner(final DirectBuffer buffer) {
142143 } else {
143144 // On Java 9 and up, but compiles on Java 8.
144145 try {
145- final Class <?> cls = Class .forName ("sun.misc.Unsafe" );
146- final Method cleanerMethod = cls .getMethod ("invokeCleaner" , ByteBuffer .class );
147- final Field unsafeField = cls .getDeclaredField ("theUnsafe" );
146+ final Class <?> clsUnsafe = Class .forName ("sun.misc.Unsafe" );
147+ final Method cleanerMethod = clsUnsafe .getMethod ("invokeCleaner" , ByteBuffer .class );
148+ final Field unsafeField = clsUnsafe .getDeclaredField ("theUnsafe" );
148149 unsafeField .setAccessible (true );
149150 cleanerMethod .invoke (unsafeField .get (null ), buffer );
150151 } catch (ReflectiveOperationException e ) {
0 commit comments