List of usage examples for com.google.common.cache CacheBuilder maximumWeight
long maximumWeight
To view the source code for com.google.common.cache CacheBuilder maximumWeight.
Click Source Link
From source file:org.locationtech.geogig.storage.postgresql.PGCache.java
private static PGCache build(Integer initialCapacityCount, Integer concurrencyLevel2, Long maxWeightBytes, Optional<Integer> expireSeconds) { CacheBuilder<Object, Object> cacheBuilder = CacheBuilder.newBuilder(); cacheBuilder = cacheBuilder.maximumWeight(maxWeightBytes); cacheBuilder.weigher(weigher);/*from ww w . j a v a 2 s. co m*/ if (expireSeconds.isPresent()) { long seconds = expireSeconds.get(); Preconditions.checkArgument(seconds > -1); cacheBuilder.expireAfterAccess(seconds, TimeUnit.SECONDS); } cacheBuilder.initialCapacity(initialCapacityCount); cacheBuilder.concurrencyLevel(concurrencyLevel2); cacheBuilder.recordStats(); SizeTracker sizeTracker = new SizeTracker(); cacheBuilder.removalListener(sizeTracker); Cache<ObjectId, byte[]> byteCache = cacheBuilder.build(); return new PGCache(byteCache, sizeTracker); }
From source file:com.google.gitiles.ConfigUtil.java
/** * Get a {@link CacheBuilder} from a config. * * @param config JGit config object./*w ww. j a va 2 s .c o m*/ * @param name name of the cache subsection under the "cache" section. * @return a new cache builder. */ public static CacheBuilder<Object, Object> getCacheBuilder(Config config, String name) { CacheBuilder<Object, Object> b = CacheBuilder.newBuilder(); try { if (config.getString("cache", name, "maximumWeight") != null) { b.maximumWeight(config.getLong("cache", name, "maximumWeight", 20 << 20)); } if (config.getString("cache", name, "maximumSize") != null) { b.maximumSize(config.getLong("cache", name, "maximumSize", 16384)); } Duration expireAfterWrite = getDuration(config, "cache", name, "expireAfterWrite", null); if (expireAfterWrite != null) { b.expireAfterWrite(expireAfterWrite.getMillis(), TimeUnit.MILLISECONDS); } Duration expireAfterAccess = getDuration(config, "cache", name, "expireAfterAccess", null); if (expireAfterAccess != null) { b.expireAfterAccess(expireAfterAccess.getMillis(), TimeUnit.MILLISECONDS); } // Add other methods as needed. } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Error getting CacheBuilder for " + name, e); } catch (IllegalStateException e) { throw new IllegalStateException("Error getting CacheBuilder for " + name, e); } return b; }
From source file:org.locationtech.geogig.storage.cache.SharedCache.java
@VisibleForTesting static SharedCache build(int L1capacity, long maxCacheSizeBytes) { checkArgument(L1capacity >= 0);/*from w w w .ja v a2 s . c o m*/ checkArgument(maxCacheSizeBytes >= 0, "Cache size can't be < 0, 0 meaning no cache at all"); if (0L == maxCacheSizeBytes) { return NO_CACHE; } int initialCapacityCount = 1_000_000; int concurrencyLevel = 16; CacheBuilder<Object, Object> cacheBuilder = CacheBuilder.newBuilder(); cacheBuilder = cacheBuilder.maximumWeight(maxCacheSizeBytes); cacheBuilder.weigher(Impl.SizeTracker.WEIGHER); cacheBuilder.initialCapacity(initialCapacityCount); cacheBuilder.concurrencyLevel(concurrencyLevel); cacheBuilder.recordStats(); Impl.SizeTracker sizeTracker = new Impl.SizeTracker(); cacheBuilder.removalListener(sizeTracker); Cache<Key, byte[]> byteCache = cacheBuilder.build(); return new Impl(L1capacity, byteCache, sizeTracker); }
From source file:com.vsct.dt.hesperides.util.HesperidesCacheBuilder.java
/** * Create cache with easy setup./* w ww . ja v a2s. c o m*/ * * @param config setup * @param weigher Guava weighter * * @return cache */ public static CacheBuilder<Object, Object> newBuilder(final HesperidesCacheParameter config, final Weigher<? extends Object, ? extends Object> weigher) { final CacheBuilder<Object, Object> cache = CacheBuilder.newBuilder(); if (config != null) { final int maxSize = config.getMaxSize(); final int weight = config.getWeight(); final String expire = config.getItemExpireAfter(); if (maxSize != HesperidesCacheParameter.NOT_SET) { cache.maximumSize(maxSize); } if (weight != HesperidesCacheParameter.NOT_SET) { if (weigher == null) { throw new IllegalArgumentException("Parameter 'weight' is not supported for this cache."); } cache.maximumWeight(weight); } if (expire != null) { final Pattern p = Pattern.compile("^([0-9]+)(m|s|h|d)"); final Matcher m = p.matcher(expire); if (m.find()) { final int time = Integer.valueOf(m.group(1)); TimeUnit unit = TimeUnit.SECONDS; switch (m.group(2)) { case "m": unit = TimeUnit.MINUTES; break; case "h": unit = TimeUnit.HOURS; break; case "d": unit = TimeUnit.DAYS; break; default: // Nothing } cache.expireAfterWrite(time, unit); cache.expireAfterAccess(time, unit); } else { throw new IllegalArgumentException( "Parameter 'itemExpireAfter' is not valid. Valid usage is [0-9]+(m|h|d|s). (Where 'm' is minutes, 'h' is hours, 'd' is days, 's' seconds."); } } } return cache; }
From source file:com.github.benmanes.caffeine.cache.testing.GuavaLocalCache.java
/** Returns a Guava-backed cache. */ @SuppressWarnings("CheckReturnValue") public static <K, V> Cache<K, V> newGuavaCache(CacheContext context) { checkState(!context.isAsync(), "Guava caches are synchronous only"); CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder(); if (context.initialCapacity != InitialCapacity.DEFAULT) { builder.initialCapacity(context.initialCapacity.size()); }//from w ww . java 2 s. c om if (context.isRecordingStats()) { builder.recordStats(); } if (context.maximumSize != MaximumSize.DISABLED) { if (context.weigher == CacheWeigher.DEFAULT) { builder.maximumSize(context.maximumSize.max()); } else { builder.weigher(new GuavaWeigher<Object, Object>(context.weigher)); builder.maximumWeight(context.maximumWeight()); } } if (context.afterAccess != Expire.DISABLED) { builder.expireAfterAccess(context.afterAccess.timeNanos(), TimeUnit.NANOSECONDS); } if (context.afterWrite != Expire.DISABLED) { builder.expireAfterWrite(context.afterWrite.timeNanos(), TimeUnit.NANOSECONDS); } if (context.refresh != Expire.DISABLED) { builder.refreshAfterWrite(context.refresh.timeNanos(), TimeUnit.NANOSECONDS); } if (context.expires() || context.refreshes()) { builder.ticker(context.ticker()); } if (context.keyStrength == ReferenceType.WEAK) { builder.weakKeys(); } else if (context.keyStrength == ReferenceType.SOFT) { throw new IllegalStateException(); } if (context.valueStrength == ReferenceType.WEAK) { builder.weakValues(); } else if (context.valueStrength == ReferenceType.SOFT) { builder.softValues(); } if (context.removalListenerType != Listener.DEFAULT) { boolean translateZeroExpire = (context.afterAccess == Expire.IMMEDIATELY) || (context.afterWrite == Expire.IMMEDIATELY); builder.removalListener(new GuavaRemovalListener<>(translateZeroExpire, context.removalListener)); } Ticker ticker = (context.ticker == null) ? Ticker.systemTicker() : context.ticker; if (context.loader == null) { context.cache = new GuavaCache<>(builder.<Integer, Integer>build(), ticker); } else if (context.loader().isBulk()) { context.cache = new GuavaLoadingCache<>( builder.build(new BulkLoader<Integer, Integer>(context.loader())), ticker); } else { context.cache = new GuavaLoadingCache<>( builder.build(new SingleLoader<Integer, Integer>(context.loader())), ticker); } @SuppressWarnings("unchecked") Cache<K, V> castedCache = (Cache<K, V>) context.cache; return castedCache; }
From source file:com.google.gerrit.server.cache.h2.DefaultCacheFactory.java
@SuppressWarnings("unchecked") <K, V> CacheBuilder<K, V> create(CacheBinding<K, V> def, boolean unwrapValueHolder) { CacheBuilder<K, V> builder = newCacheBuilder(); builder.recordStats();/*from ww w . j a v a 2 s . c om*/ builder.maximumWeight(cfg.getLong("cache", def.name(), "memoryLimit", def.maximumWeight())); builder.removalListener(forwardingRemovalListenerFactory.create(def.name())); Weigher<K, V> weigher = def.weigher(); if (weigher != null && unwrapValueHolder) { final Weigher<K, V> impl = weigher; weigher = (Weigher<K, V>) new Weigher<K, ValueHolder<V>>() { @Override public int weigh(K key, ValueHolder<V> value) { return impl.weigh(key, value.value); } }; } else if (weigher == null) { weigher = unitWeight(); } builder.weigher(weigher); Long age = def.expireAfterWrite(TimeUnit.SECONDS); if (has(def.name(), "maxAge")) { builder.expireAfterWrite(ConfigUtil.getTimeUnit(cfg, "cache", def.name(), "maxAge", age != null ? age : 0, TimeUnit.SECONDS), TimeUnit.SECONDS); } else if (age != null) { builder.expireAfterWrite(age, TimeUnit.SECONDS); } return builder; }
From source file:com.github.benmanes.caffeine.cache.testing.GuavaCacheFromContext.java
/** Returns a Guava-backed cache. */ @SuppressWarnings("CheckReturnValue") public static <K, V> Cache<K, V> newGuavaCache(CacheContext context) { checkState(!context.isAsync(), "Guava caches are synchronous only"); CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder(); context.guava = builder;/*from w w w . j a v a2 s . c om*/ builder.concurrencyLevel(1); if (context.initialCapacity != InitialCapacity.DEFAULT) { builder.initialCapacity(context.initialCapacity.size()); } if (context.isRecordingStats()) { builder.recordStats(); } if (context.maximumSize != Maximum.DISABLED) { if (context.weigher == CacheWeigher.DEFAULT) { builder.maximumSize(context.maximumSize.max()); } else { builder.weigher(new GuavaWeigher<Object, Object>(context.weigher)); builder.maximumWeight(context.maximumWeight()); } } if (context.afterAccess != Expire.DISABLED) { builder.expireAfterAccess(context.afterAccess.timeNanos(), TimeUnit.NANOSECONDS); } if (context.afterWrite != Expire.DISABLED) { builder.expireAfterWrite(context.afterWrite.timeNanos(), TimeUnit.NANOSECONDS); } if (context.refresh != Expire.DISABLED) { builder.refreshAfterWrite(context.refresh.timeNanos(), TimeUnit.NANOSECONDS); } if (context.expires() || context.refreshes()) { builder.ticker(context.ticker()); } if (context.keyStrength == ReferenceType.WEAK) { builder.weakKeys(); } else if (context.keyStrength == ReferenceType.SOFT) { throw new IllegalStateException(); } if (context.valueStrength == ReferenceType.WEAK) { builder.weakValues(); } else if (context.valueStrength == ReferenceType.SOFT) { builder.softValues(); } if (context.removalListenerType != Listener.DEFAULT) { boolean translateZeroExpire = (context.afterAccess == Expire.IMMEDIATELY) || (context.afterWrite == Expire.IMMEDIATELY); builder.removalListener(new GuavaRemovalListener<>(translateZeroExpire, context.removalListener)); } Ticker ticker = (context.ticker == null) ? Ticker.systemTicker() : context.ticker; if (context.loader == null) { context.cache = new GuavaCache<>(builder.<Integer, Integer>build(), ticker, context.isRecordingStats()); } else if (context.loader().isBulk()) { context.cache = new GuavaLoadingCache<>( builder.build(new BulkLoader<Integer, Integer>(context.loader())), ticker, context.isRecordingStats()); } else { context.cache = new GuavaLoadingCache<>( builder.build(new SingleLoader<Integer, Integer>(context.loader())), ticker, context.isRecordingStats()); } @SuppressWarnings("unchecked") Cache<K, V> castedCache = (Cache<K, V>) context.cache; return castedCache; }
From source file:org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache.java
@Inject public IndicesFieldDataCache(Settings settings, IndicesFieldDataCacheListener indicesFieldDataCacheListener) { super(settings); this.indicesFieldDataCacheListener = indicesFieldDataCacheListener; String size = componentSettings.get("size", "-1"); long sizeInBytes = componentSettings.getAsMemory("size", "-1").bytes(); if (sizeInBytes > ByteSizeValue.MAX_GUAVA_CACHE_SIZE.bytes()) { logger.warn("reducing requested field data cache size of [{}] to the maximum allowed size of [{}]", new ByteSizeValue(sizeInBytes), ByteSizeValue.MAX_GUAVA_CACHE_SIZE); sizeInBytes = ByteSizeValue.MAX_GUAVA_CACHE_SIZE.bytes(); size = ByteSizeValue.MAX_GUAVA_CACHE_SIZE.toString(); }/*from w ww. jav a 2 s.com*/ final TimeValue expire = componentSettings.getAsTime("expire", null); CacheBuilder<Key, RamUsage> cacheBuilder = CacheBuilder.newBuilder().removalListener(this); if (sizeInBytes > 0) { cacheBuilder.maximumWeight(sizeInBytes).weigher(new FieldDataWeigher()); } // defaults to 4, but this is a busy map for all indices, increase it a bit cacheBuilder.concurrencyLevel(16); if (expire != null && expire.millis() > 0) { cacheBuilder.expireAfterAccess(expire.millis(), TimeUnit.MILLISECONDS); } logger.debug("using size [{}] [{}], expire [{}]", size, new ByteSizeValue(sizeInBytes), expire); cache = cacheBuilder.build(); }
From source file:com.addthis.hydra.data.tree.ReadTree.java
public ReadTree(File root, boolean metrics) throws Exception { this.metrics = metrics; if (!root.isDirectory()) { throw new IOException("Unable to open root directory '" + root + "'"); }/*from ww w. j ava2 s . co m*/ this.root = root; this.advanced = TreeConfig.readFromDataDirectory(root.toPath()); source = initSource(); try { CacheBuilder<? super CacheKey, ? super ReadTreeNode> cacheBuilder = CacheBuilder.newBuilder(); if (nodeCacheWeight != 0) { // limit by weight cacheBuilder = cacheBuilder.maximumWeight((long) (nodeCacheWeight * advanced.cacheWeight)) .weigher((key, value) -> { /* A lean node goes from 24 to 24 + its string name and + cacheKey. the 24 becomes a small percentage. Dangerous, fat nodes typically have lots of serialized strings in their value payload. The inflation ratio there is actually probably less than for lean nodes since the various pointers for the string objects may not be nearly as large as the strings themselves. Therefore, holding them to the lean node's expansion standard is probably conservative enough. */ return value.getWeight(); }); } else { // Limit by the number of nodes cacheBuilder = cacheBuilder.maximumSize((long) (nodeCacheSize * advanced.cacheWeight)); } loadingNodeCache = cacheBuilder.build(new CacheLoader<CacheKey, ReadTreeNode>() { @Override public ReadTreeNode load(CacheKey key) throws Exception { ReadTreeNode node = sourceGet(key.dbkey()); if (node != null) { node.init(ReadTree.this, key.name); return node; } else { return MISSING; } } }); rootNode = getNode(1, "root"); if (rootNode == null) { throw new IllegalStateException("missing root in readonly tree"); } } catch (Exception e) { source.close(); throw e; } }
From source file:uk.q3c.krail.core.user.opt.GuavaCacheConfiguration.java
public CacheBuilder<Object, Object> builder() { CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder(); if (initialCapacity != null) { builder.initialCapacity(initialCapacity); }//from ww w .j a v a 2s. com if (maximumSize != null) { builder.maximumSize(maximumSize); } if (maximumWeight != null) { builder.maximumWeight(maximumWeight); } if (concurrencyLevel != null) { builder.concurrencyLevel(concurrencyLevel); } if (weakKeys) { builder.weakKeys(); } if (weakValues) { } builder.weakValues(); if (softValues) { builder.softValues(); } if (expireAfterWriteDuration != null) { builder.expireAfterWrite(expireAfterWriteDuration, expireAfterWriteTimeUnit); } if (expireAfterAccessDuration != null) { builder.expireAfterAccess(expireAfterAccessDuration, expireAfterAccessTimeUnit); } if (refreshAfterWriteDuration != null) { builder.refreshAfterWrite(refreshAfterWriteDuration, refreshAfterWriteTimeUnit); } if (ticker != null) { builder.ticker(ticker); } if (removalListener != null) { builder.removalListener(removalListener); } if (recordStats) { builder.recordStats(); } return builder; }