It is possible remove data from cache, when available runtime memory near with overflow? The cache implementetion is below:
Cache<String, Cache<String, List<String>>> cache = CacheBuilder.newBuilder()
.maximumWeight((int) ((Runtime.getRuntime().totalMemory() / 1024) * 0.9))
.weigher((Weigher<String, Cache<String, List<String>>>) (key, val) -> runtimeMemory())
.build();
public static int runtimeMemory() {
long totalMemory = Runtime.getRuntime().totalMemory() / 1024;
long freeMemory = Runtime.getRuntime().freeMemory() / 1024;
return (int) (totalMemory - freeMemory);
}
It is work or no ? Or weigher summarizes runtimeMemory() for each value?