java ConcurrentMap 获取空值

java ConcurrentMap get in null

我有这个 ConcurrentMap

 ConcurrentMap<String, Byte[]> companyLogo = new MapMaker()
                   .concurrencyLevel(Runtime.getRuntime().availableProcessors())
                   .weakKeys()
                   .initialCapacity(1000)
                   .expiration(24, TimeUnit.HOURS)
                   .makeMap();

和这段代码

companyLogo.put("cpr48124", ArrayUtils.toObject(resize (request, ((Byte[])request.getSession().getAttribute(COMPANY_LOGO_KEY+ imageId)))));
companyLogo.get("cpr48124");

companyLogo.get("cpr48124"); 为空。怎么可能?

我不熟悉 MapMaker,但我猜 weakKeys 可能是你的问题。

您的新条目的 'weakness' 可能导致它不可用,因为没有其他引用它。