只是想知道系统是否为空的番石榴缓存预先分配了空间?我是番石榴缓存的新手,有人可以帮助我了解此问题吗?

我也用下面的代码测试它:

    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,您将获得更加准确的结果。

10-08 19:04