diff options
Diffstat (limited to 'lang/src/main/java/net/openhft/lang/io/AbstractMappedStore.java')
-rw-r--r-- | lang/src/main/java/net/openhft/lang/io/AbstractMappedStore.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lang/src/main/java/net/openhft/lang/io/AbstractMappedStore.java b/lang/src/main/java/net/openhft/lang/io/AbstractMappedStore.java index 3708e1b..58aa5c1 100644 --- a/lang/src/main/java/net/openhft/lang/io/AbstractMappedStore.java +++ b/lang/src/main/java/net/openhft/lang/io/AbstractMappedStore.java @@ -28,7 +28,7 @@ import java.util.logging.Logger; import net.openhft.lang.io.serialization.ObjectSerializer; import net.openhft.lang.model.constraints.NotNull; -import sun.misc.Cleaner; +import java.lang.ref.Cleaner; import sun.nio.ch.FileChannelImpl; abstract class AbstractMappedStore implements BytesStore, Closeable { @@ -39,7 +39,8 @@ abstract class AbstractMappedStore implements BytesStore, Closeable { // retain to prevent GC. private final File file; private final RandomAccessFile raf; - private final Cleaner cleaner; + private final static Cleaner cleaner = Cleaner.create(); + private Cleaner.Cleanable cleanable; private final AtomicInteger refCount = new AtomicInteger(1); private final FileChannel.MapMode mode; protected final MmapInfoHolder mmapInfoHolder; @@ -59,7 +60,7 @@ abstract class AbstractMappedStore implements BytesStore, Closeable { this.raf = new RandomAccessFile(file, accesModeFor(mode)); resizeIfNeeded(startInFile, size); map(startInFile); - this.cleaner = Cleaner.create(this, new Unmapper(mmapInfoHolder, raf)); + this.cleanable = cleaner.register(this, new Unmapper(mmapInfoHolder, raf)); } catch (Exception e) { throw wrap(e); } @@ -173,7 +174,7 @@ abstract class AbstractMappedStore implements BytesStore, Closeable { @Override public final void free() { - cleaner.clean(); + cleanable.clean(); } @Override |