我在内存中有一个存储对象的Map
。当我即将用完内存时,我想将其刷新到内存中。目前,我正在执行以下操作:
void add(K key, V value) {
if (underPressure()) {
flush(innerMap);
}
innerMap.add(k, v);
}
boolean underPressure() {
Runtime rt = Runtime.getRuntime();
long maxMemory = rt.maxMemory();
long freeMemory = rt.freeMemory();
return (double) freeMemory / maxMemory < threshold;
}
underPressure()
每次插入时都会被调用,它的开销有多大?据我理解,由于它是一种近似值,应该会被 jvm 进行 缓存,但有人对此了解更多吗?
return freememory < maxMemory * threshold;
,因为乘法比除法稍微快一些。 - Peter Lawreyfinal boolean underPressure()
,否则有人会用一首非常糟糕的说唱歌曲来覆盖这个方法。那么每当有人看到这个方法签名时,如果他们还没有超过某个年龄,他们就会将其与 Vanilla Ice 的版本联系起来,你就会失败了。 :-( - corsiKa