@Override public int getMemory(Object obj) { VersionedValue v = (VersionedValue) obj; return valueType.getMemory(v.value) + 8; }
@Override public int getMemory(Object obj) { Object[] array = (Object[]) obj; int size = 0; for (int i = 0; i < arrayLength; i++) { DataType t = elementTypes[i]; Object o = array[i]; if (o != null) { size += t.getMemory(o); } } return size; }
@Override public int getMemory(Object obj) { DataType t = getType(obj); if (t == this) { return averageSize; } return t.getMemory(obj); }
/** * Replace the value at an index in this page. * * @param index the index * @param value the new value * @return the old value */ public Object setValue(int index, Object value) { Object old = values[index]; // this is slightly slower: // values = Arrays.copyOf(values, values.length); values = values.clone(); DataType valueType = map.getValueType(); if(isPersistent()) { addMemory(valueType.getMemory(value) - valueType.getMemory(old)); } values[index] = value; return old; }
/** * Replace the key at an index in this page. * * @param index the index * @param key the new key */ public void setKey(int index, Object key) { // this is slightly slower: // keys = Arrays.copyOf(keys, keys.length); keys = keys.clone(); if(isPersistent()) { Object old = keys[index]; DataType keyType = map.getKeyType(); int mem = keyType.getMemory(key); if (old != null) { mem -= keyType.getMemory(old); } addMemory(mem); } keys[index] = key; }
private void recalculateMemory() { int mem = DataUtils.PAGE_MEMORY; DataType keyType = map.getKeyType(); for (Object key : keys) { mem += keyType.getMemory(key); } if (this.isLeaf()) { DataType valueType = map.getValueType(); for (int i = 0; i < keys.length; i++) { mem += valueType.getMemory(values[i]); } } else { mem += this.getRawChildPageCount() * DataUtils.PAGE_MEMORY_CHILD; } addMemory(mem - memory); }
/** * Insert a key-value pair into this leaf. * * @param index the index * @param key the key * @param value the value */ public void insertLeaf(int index, Object key, Object value) { int len = keys.length + 1; Object[] newKeys = new Object[len]; DataUtils.copyWithGap(keys, newKeys, len - 1, index); keys = newKeys; Object[] newValues = new Object[len]; DataUtils.copyWithGap(values, newValues, len - 1, index); values = newValues; keys[index] = key; values[index] = value; totalCount++; if(isPersistent()) { addMemory(map.getKeyType().getMemory(key) + map.getValueType().getMemory(value)); } }
/** * Insert a child page into this node. * * @param index the index * @param key the key * @param childPage the child page */ public void insertNode(int index, Object key, Page childPage) { Object[] newKeys = new Object[keys.length + 1]; DataUtils.copyWithGap(keys, newKeys, keys.length, index); newKeys[index] = key; keys = newKeys; int childCount = children.length; PageReference[] newChildren = new PageReference[childCount + 1]; DataUtils.copyWithGap(children, newChildren, childCount, index); newChildren[index] = new PageReference( childPage, childPage.getPos(), childPage.totalCount); children = newChildren; totalCount += childPage.totalCount; if(isPersistent()) { addMemory(map.getKeyType().getMemory(key) + DataUtils.PAGE_MEMORY_CHILD); } }
@Override public int getMemory(Object obj) { Object[] array = (Object[]) obj; int size = 0; for (int i = 0; i < arrayLength; i++) { DataType t = elementTypes[i]; Object o = array[i]; if (o != null) { size += t.getMemory(o); } } return size; }
@Override public int getMemory(Object obj) { VersionedValue v = (VersionedValue) obj; return valueType.getMemory(v.value) + 8; }
@Override public int getMemory(Object obj) { VersionedValue v = (VersionedValue) obj; return valueType.getMemory(v.value) + 8; }
@Override public int getMemory(Object obj) { Object[] array = (Object[]) obj; int size = 0; for (int i = 0; i < arrayLength; i++) { DataType t = elementTypes[i]; Object o = array[i]; if (o != null) { size += t.getMemory(o); } } return size; }
@Override public int getMemory(Object obj) { DataType t = getType(obj); if (t == this) { return averageSize; } return t.getMemory(obj); }
@Override public int getMemory(Object obj) { DataType t = getType(obj); if (t == this) { return averageSize; } return t.getMemory(obj); }
@Override public int getMemory(Object obj) { DataType t = getType(obj); if (t == this) { return averageSize; } return t.getMemory(obj); }
/** * Replace the value at an index in this page. * * @param index the index * @param value the new value * @return the old value */ public Object setValue(int index, Object value) { Object old = values[index]; // this is slightly slower: // values = Arrays.copyOf(values, values.length); values = values.clone(); DataType valueType = map.getValueType(); addMemory(valueType.getMemory(value) - valueType.getMemory(old)); values[index] = value; return old; }
/** * Replace the value at an index in this page. * * @param index the index * @param value the new value * @return the old value */ public Object setValue(int index, Object value) { Object old = values[index]; // this is slightly slower: // values = Arrays.copyOf(values, values.length); values = values.clone(); DataType valueType = map.getValueType(); addMemory(valueType.getMemory(value) - valueType.getMemory(old)); values[index] = value; return old; }
private void write(final K key, final V value) { cache.switchGenerationIfNeeded(); if (value == null) { map.remove(key); } else { if (!type.shouldCache(nodeStore, key)){ return; } map.put(key, value); long memory = 0L; memory += (key == null ? 0L: keyType.getMemory(key)); memory += (value == null ? 0L: valueType.getMemory(value)); stats.markBytesWritten(memory); stats.markPut(); } }
private void write(final K key, final V value) { cache.switchGenerationIfNeeded(); if (value == null) { map.remove(key); } else { if (!type.shouldCache(nodeStore, key)){ return; } map.put(key, value); long memory = 0L; memory += (key == null ? 0L: keyType.getMemory(key)); memory += (value == null ? 0L: valueType.getMemory(value)); stats.markBytesWritten(memory); stats.markPut(); } }