public interface PageCache extends AutoCloseable
This interface does not specify the cache eviction and allocation behavior, it may be backed by implementations that map entire files into RAM, or implementations with smart eviction strategies, trying to keep "hot" pages in RAM.
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Flush all dirty pages and close the page cache.
|
void |
flushAndForce()
Flush all dirty pages
|
void |
flushAndForce(IOLimiter limiter)
Flush all dirty pages, but limit the rate of IO as advised by the given IOPSLimiter.
|
PagedFile |
map(File file,
int pageSize,
OpenOption... openOptions)
Ask for a handle to a paged file, backed by this page cache.
|
int |
maxCachedPages()
The max number of cached pages.
|
int |
pageSize()
The size in bytes of the pages managed by this cache.
|
PagedFile map(File file, int pageSize, OpenOption... openOptions) throws IOException
Note that this currently asks for the pageSize to use, which is an artifact or records being of varying size in the stores. This should be consolidated to use a standard page size for the whole cache, with records aligning on those page boundaries.
file - The file to map.pageSize - The file page size to use for this mapping. If the file is already mapped with a different page
size, an exception will be thrown.openOptions - The set of open options to use for mapping this file.
The StandardOpenOption.READ and StandardOpenOption.WRITE options always implicitly specified.
The StandardOpenOption.CREATE open option will create the given file if it does not already exist, and
the StandardOpenOption.TRUNCATE_EXISTING will truncate any existing file iff it has not already
been mapped.
The StandardOpenOption.DELETE_ON_CLOSE will cause the file to be deleted after the last unmapping.
The PageCacheOpenOptions.EXCLUSIVE will cause the map method to throw if the file is already
mapped. Otherwise, the file will be mapped exclusively, and subsequent attempts at mapping the file will fail
with an exception until the exclusively mapped file is closed.
All other options are either silently ignored, or will cause an exception to be thrown.NoSuchFileException - if the given file does not exist, and the
StandardOpenOption.CREATE option was not specified.IOException - if the file could otherwise not be mapped. Causes include the file being locked, or exclusive
mapping conflicts.void flushAndForce()
throws IOException
IOExceptionvoid flushAndForce(IOLimiter limiter) throws IOException
limiter - The IOLimiter that determines if pauses or sleeps should be injected into the flushing
process to keep the IO rate down.IOExceptionvoid close()
throws IOException
close in interface AutoCloseableIOExceptionint pageSize()
int maxCachedPages()
Copyright © 2002–2016 The Neo4j Graph Database Project. All rights reserved.