我知道可以通过MapStore接口的实现将Hazelcast上的地图上的每个条目存储到支持DataStore的位置,但是在我们的应用程序中,我们不希望这样做,我们只希望如果我们的应用程序运行时会出现OutOfMemory的危险例外,它逐出内存中一定百分比的数据(采用LRU原理),但是在逐出期间,它将逐出的条目存储到数据存储中,如果再次询问输入键,则会再次加载它们。
我知道存在OutOfMemoryHandler接口来管理OutOfMemory情况,%25驱逐策略存在并且MapStore也存在。
我不知道可以将它们全部合并吗?
寻求答案...
答案 0 :(得分:0)
IMap.putTransient()
将条目放入IMap,但不触发MapStore.store()IMap.evict()
(或自动逐出)不会触发MapStore的删除,即只会从IMap中删除。但是,我不建议使用这种方法,因为一旦jvm获得OutOfMemoryError
,它就会变得不稳定,因此无法应用这种业务逻辑。即使JVM抛出OutOfMemoryHandler
,也可能不会调用OutOfMemoryError
,因为该错误可能是从外部(用户)线程抛出的,并且可能不会通知Hazelcast。