只是想知道系统是否为空的番石榴缓存预先分配了空间?我是番石榴缓存的新手,有人可以帮助我了解此问题吗?
我也用下面的代码测试它:
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);
奇怪的是,使用的内存在减少之后.....不知道为什么。
有人可以解释一下。
非常感谢 : )
最佳答案
垃圾收集器的方式是神秘的。这很有可能,您应该在尝试计算使用的内存之前显式调用垃圾回收器。在计算System.gc()
和preMemUsage
之前立即使用postMemUsage
,您将获得更加准确的结果。