|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectucar.nc2.util.cache.FileCache
@ThreadSafe public class FileCache
Keep cache of open FileCacheable objects, for example NetcdfFile. The FileCacheable object typically contains a RandomAccessFile object that wraps a system resource like a file handle. These are left open when the NetcdfFile is in the cache. The maximum number of these is bounded, though not strictly. A cleanup routine reduces cache size to a minimum number. This cleanup is called periodically in a background thread, and also when the maximum cache size is reached.
NetcdfDataset.initNetcdfFileCache(...); // on application startup
...
NetcdfFile ncfile = null;
try {
ncfile = NetcdfDataset.acquireFile(location, cancelTask);
...
} finally {
if (ncfile != null) ncfile.close();
}
...
NetcdfDataset.shutdown(); // when terminating the application
All methods are thread safe.
Cleanup is done automatically in a background thread, using LRU algorithm.
| Constructor Summary | |
|---|---|
FileCache(int minElementsInMemory,
int maxElementsInMemory,
int period)
Constructor. |
|
FileCache(int minElementsInMemory,
int softLimit,
int hardLimit,
int period)
Constructor. |
|
FileCache(String name,
int minElementsInMemory,
int softLimit,
int hardLimit,
int period)
Constructor. |
|
| Method Summary | |
|---|---|
FileCacheable |
acquire(FileFactory factory,
Object hashKey,
String location,
int buffer_size,
CancelTask cancelTask,
Object spiObject)
Acquire a FileCacheable from the cache, and lock it so no one else can use it. |
FileCacheable |
acquire(FileFactory factory,
String location,
CancelTask cancelTask)
Acquire a FileCacheable, and lock it so no one else can use it. |
void |
clearCache(boolean force)
Remove all cache entries. |
void |
disable()
Disable the cache, and force release all files. |
void |
enable()
Enable the cache, with the current set of parameters. |
String |
getInfo(FileCacheable ncfile)
|
void |
release(FileCacheable ncfile)
Release the file. |
List<String> |
showCache()
|
void |
showCache(Formatter format)
Show individual cache entries, add to formatter. |
void |
showStats(Formatter format)
Add stat report (hits, misses, etc) to formatter. |
static void |
shutdown()
You must call shutdown() to shut down the background threads in order to get a clean process shutdown. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public FileCache(int minElementsInMemory,
int maxElementsInMemory,
int period)
minElementsInMemory - keep this number in the cachemaxElementsInMemory - trigger a cleanup if it goes over this number.period - (secs) do periodic cleanups every this number of seconds.
public FileCache(int minElementsInMemory,
int softLimit,
int hardLimit,
int period)
minElementsInMemory - keep this number in the cachesoftLimit - trigger a cleanup if it goes over this number.hardLimit - if > 0, never allow more than this many elements. This causes a cleanup to be done in the calling thread.period - if > 0, do periodic cleanups every this number of seconds.
public FileCache(String name,
int minElementsInMemory,
int softLimit,
int hardLimit,
int period)
name - of file cacheminElementsInMemory - keep this number in the cachesoftLimit - trigger a cleanup if it goes over this number.hardLimit - if > 0, never allow more than this many elements. This causes a cleanup to be done in the calling thread.period - if > 0, do periodic cleanups every this number of seconds.| Method Detail |
|---|
public static void shutdown()
public void disable()
public void enable()
public FileCacheable acquire(FileFactory factory,
String location,
CancelTask cancelTask)
throws IOException
factory - use this factory to open the file; may not be nulllocation - file location, also used as the cache name, will be passed to the NetcdfFileFactorycancelTask - user can cancel, ok to be null.
IOException - on error
public FileCacheable acquire(FileFactory factory,
Object hashKey,
String location,
int buffer_size,
CancelTask cancelTask,
Object spiObject)
throws IOException
factory - use this factory to open the file if not in the cache; may not be nullhashKey - unique key for this file. If null, the location will be usedlocation - file location, may also used as the cache name, will be passed to the NetcdfFileFactorybuffer_size - RandomAccessFile buffer size, if <= 0, use default sizecancelTask - user can cancel, ok to be null.spiObject - sent to iosp.setSpecial() if not null
IOException - on error
public void release(FileCacheable ncfile)
throws IOException
ncfile - release this file.
IOException - if file not in cache.
public String getInfo(FileCacheable ncfile)
throws IOException
IOExceptionpublic void clearCache(boolean force)
force - if true, remove them even if they are currently locked.public void showCache(Formatter format)
format - add to thispublic List<String> showCache()
public void showStats(Formatter format)
format - add to this
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||