只是想知道系统是否为空番石榴缓存预先分配了空间?我是guava缓存的新手,有人可以帮我理解这个问题吗?
我也用以下代码测试它:
long preMemUsage = Runtime.getRuntime().totalMemory() -Runtime.getRuntime().freeMemory();
Cache<String, CountObject> cache = CacheBuilder.newBuilder()
.maximumSize(12000)
.expireAfterAccess(7200,TimeUnit.SECONDS)
.concurrencyLevel(10)
.recordStats().build();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
long postMemUsage = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
System.out.println("Before: " + preMemUsage);
System.out.println("After: " + postMemUsage);
奇怪的是使用后的内存减少了.....不知道为什么。 有人可以解释一下。
非常感谢:)
答案 0 :(得分:1)
神秘的是垃圾收集器的方式。它几乎是可能的,你应该在尝试计算已用内存之前明确地调用垃圾收集器。在计算System.gc()
和preMemUsage
之前使用postMemUsage
,您应该可以获得更准确的结果。