簡體   English   中英

如何通過Java清除緩存對象(內存)

[英]How to clear cache object (memory) through Java

用於分配緩存內存的代碼段:

private static Cache cache = CacheManager.getInstance().getCache(CACHE_NAME);

public static HashMap<String, XXX> getxxCodes(int version) {
        HashMap<String, XXX> xxCodes = new HashMap<String, XXX>();
        try{
            Object[] cacheResult = cache.get(Constants.I_XX_CODES_FOR_XXX);
            if (Boolean.FALSE.equals(cacheResult[1])) {
        cache.put(Constants.I_XX_CODES_FOR_XXX, id.loadXXHashMap(version));
                cacheResult = cache.get(Constants.I_XX_CODES_FOR_XXX);
            }
            if(cacheResult[0]!=null){
                xxCodes = (HashMap<String, XXX>)cacheResult[0];
            }
        }catch(Exception e){
            logger.error("Exception occured while loading Data from I10_DRG_XX",e);
        }
        return xxCodes;
    }

現在在某個時間點,我需要將其他“版本”加載到緩存中。 這里的版本可以是1、2、3等。因此,緩存首先保存版本1數據(哈希圖)。 現在,當我傳遞緩存中不可用的2時,它需要再次將特定數據加載到緩存中,但是在此之前最好清除版本1數據。 我們是否有類似flush的命令來清除特定數據?

我希望我清楚我的問題。 感謝您的幫助。

這將從Cache( Assumption:Weblogic cache )中刪除該對象。它將生存時間設置為“ 0”

Cache cache = getCache();
cache.remove(cacheKey);

getCache()可以實現如下...

public Cache getCache(){
    Cache cache = CacheFactory.getCache(cacheKey);
    long ttl=0;
    cache.setTtl(ttl);
    return cache;
}

我已使用以下代碼及其正常工作,

public void flushCache()
    {
        cache.flush(cacheKeyName)
    }

這將從內存中刪除緩存實例。 感謝你的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM