Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Guava文件缓存_Java_Android_Caching_Guava - Fatal编程技术网

Java Guava文件缓存

Java Guava文件缓存,java,android,caching,guava,Java,Android,Caching,Guava,我在Android应用程序中使用Guava加载图像并缓存文件名 这是我的缓存: private static final LoadingCache<String, String> imageCache = CacheBuilder.newBuilder() .softValues() .initialCapacity(3000) .maximumSize(3000) .concurrencyLevel(12) .expireAfterAcces

我在Android应用程序中使用Guava加载图像并缓存文件名

这是我的缓存:

private static final LoadingCache<String, String> imageCache = CacheBuilder.newBuilder()
    .softValues()
    .initialCapacity(3000)
    .maximumSize(3000)
    .concurrencyLevel(12)
    .expireAfterAccess(IMAGE_EXPIRATION_TIMEOUT, TimeUnit.SECONDS)
    .build(new CacheLoader<String, String>() {
        @Override
        public String load(String key) throws Exception {
            Log.d(TAG, "load " + key);
            Bitmap bitmap = null;

            final File imageFile = new File(cacheDir, "http---com-jWs-jpg");

            return imageFile.getPath();
        }
    });
我的问题是:我的列表中有12个唯一的URL,但我的错误计数太大:

i:cache size :6:CacheStats{hitCount=36, missCount=48, loadSuccessCount=48, loadExceptionCount=0, totalLoadTime=46569827...)
当我返回简单字符串(如文件路径或简单的空字符串)时,我只有12次未命中,其他
get
是命中率。我做错了什么?

好的,明白了


.softValues()
是原因,我的值由垃圾收集器收集。当我对此进行评论时,一切都正常了。

这段代码看起来不错。您确定它没有因正常原因过期吗?公共静态最终int映像\u过期\u超时=7200;-我认为,在几秒钟内过期太多了超时时间是以毫秒为单位的——也就是7秒——如果您使用了大量内存,
softValues
可能会获取GC'd项。尝试添加一个RemovalListener来记录逐出和原因。expireAfterAccess(IMAGE\u EXPIRATION\u TIMEOUT,TimeUnit.SECONDS)-我已经指定了以秒为单位的超时时间,当我尝试增加它时,没有发生任何事情等待。正确的。嗯,对不起。不过,还是要使用
RemovalListener
查看是否发生了逐出以及原因。不管怎样,同时使用三种不同的过期策略有点过分。(每个条目都会消耗额外的内存。)
i:cache size :6:CacheStats{hitCount=36, missCount=48, loadSuccessCount=48, loadExceptionCount=0, totalLoadTime=46569827...)