public static <K, V> SerializingCache<K, V> create(long weightedCapacity, Weigher<RefCountedMemory> weigher, ISerializer<V> serializer) { return new SerializingCache<>(weightedCapacity, weigher, serializer); }
public static <K, V> SerializingCache<K, V> create(long weightedCapacity, ISerializer<V> serializer) { return create(weightedCapacity, new Weigher<RefCountedMemory>() { public int weightOf(RefCountedMemory value) { long size = value.size(); assert size < Integer.MAX_VALUE : "Serialized size cannot be more than 2GB"; return (int) size; } }, serializer); }
return false; // we have already freed hence noop. oldValue = deserialize(old); old.unreference(); RefCountedMemory mem = serialize(value); if (mem == null) return false; // out of memory. never mind.
@SuppressWarnings("resource") public void put(K key, V value) { RefCountedMemory mem = serialize(value); if (mem == null) return; // out of memory. never mind. RefCountedMemory old; try { old = map.put(key, mem); } catch (Throwable t) { mem.unreference(); throw t; } if (old != null) old.unreference(); }
@SuppressWarnings("resource") public V get(K key) { RefCountedMemory mem = map.get(key); if (mem == null) return null; if (!mem.reference()) return null; try { return deserialize(mem); } finally { mem.unreference(); } }
return false; // we have already freed hence noop. oldValue = deserialize(old); old.unreference(); RefCountedMemory mem = serialize(value); if (mem == null) return false; // out of memory. never mind.
public boolean putIfAbsent(K key, V value) { RefCountedMemory mem = serialize(value); if (mem == null) return false; // out of memory. never mind. RefCountedMemory old; try { old = map.putIfAbsent(key, mem); } catch (Throwable t) { mem.unreference(); throw t; } if (old != null) // the new value was not put, we've uselessly allocated some memory, free it mem.unreference(); return old == null; }
public V get(K key) { RefCountedMemory mem = map.get(key); if (mem == null) return null; if (!mem.reference()) return null; try { return deserialize(mem); } finally { mem.unreference(); } }
return false; // we have already freed hence noop. oldValue = deserialize(old); old.unreference(); RefCountedMemory mem = serialize(value); if (mem == null) return false; // out of memory. never mind.
public static <K, V> SerializingCache<K, V> create(long weightedCapacity, ISerializer<V> serializer) { return create(weightedCapacity, new Weigher<RefCountedMemory>() { public int weightOf(RefCountedMemory value) { long size = value.size(); assert size < Integer.MAX_VALUE : "Serialized size cannot be more than 2GB"; return (int) size; } }, serializer); }
@SuppressWarnings("resource") public boolean putIfAbsent(K key, V value) { RefCountedMemory mem = serialize(value); if (mem == null) return false; // out of memory. never mind. RefCountedMemory old; try { old = map.putIfAbsent(key, mem); } catch (Throwable t) { mem.unreference(); throw t; } if (old != null) // the new value was not put, we've uselessly allocated some memory, free it mem.unreference(); return old == null; }
public static <K, V> SerializingCache<K, V> create(long weightedCapacity, Weigher<RefCountedMemory> weigher, ISerializer<V> serializer) { return new SerializingCache<>(weightedCapacity, weigher, serializer); }
@SuppressWarnings("resource") public V get(K key) { RefCountedMemory mem = map.get(key); if (mem == null) return null; if (!mem.reference()) return null; try { return deserialize(mem); } finally { mem.unreference(); } }
return false; // we have already freed hence noop. oldValue = deserialize(old); old.unreference(); RefCountedMemory mem = serialize(value); if (mem == null) return false; // out of memory. never mind.
public static <K, V> SerializingCache<K, V> create(long weightedCapacity, ISerializer<V> serializer) { return create(weightedCapacity, new Weigher<RefCountedMemory>() { public int weightOf(RefCountedMemory value) { long size = value.size(); assert size < Integer.MAX_VALUE : "Serialized size cannot be more than 2GB"; return (int) size; } }, serializer); }
@SuppressWarnings("resource") public void put(K key, V value) { RefCountedMemory mem = serialize(value); if (mem == null) return; // out of memory. never mind. RefCountedMemory old; try { old = map.put(key, mem); } catch (Throwable t) { mem.unreference(); throw t; } if (old != null) old.unreference(); }
public static <K, V> SerializingCache<K, V> create(long weightedCapacity, Weigher<RefCountedMemory> weigher, ISerializer<V> serializer) { return new SerializingCache<>(weightedCapacity, weigher, serializer); }
@SuppressWarnings("resource") public V get(K key) { RefCountedMemory mem = map.get(key); if (mem == null) return null; if (!mem.reference()) return null; try { return deserialize(mem); } finally { mem.unreference(); } }
public static <K, V> SerializingCache<K, V> create(long weightedCapacity, ISerializer<V> serializer) { return create(weightedCapacity, new Weigher<RefCountedMemory>() { public int weightOf(RefCountedMemory value) { long size = value.size(); assert size < Integer.MAX_VALUE : "Serialized size cannot be more than 2GB"; return (int) size; } }, serializer); }
@SuppressWarnings("resource") public void put(K key, V value) { RefCountedMemory mem = serialize(value); if (mem == null) return; // out of memory. never mind. RefCountedMemory old; try { old = map.put(key, mem); } catch (Throwable t) { mem.unreference(); throw t; } if (old != null) old.unreference(); }