com.carrotsearch.hppc.LongHashSet.allocateBuffers()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(3.7k)|赞(0)|评价(0)|浏览(86)

本文整理了Java中com.carrotsearch.hppc.LongHashSet.allocateBuffers()方法的一些代码示例,展示了LongHashSet.allocateBuffers()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。LongHashSet.allocateBuffers()方法的具体详情如下:
包路径:com.carrotsearch.hppc.LongHashSet
类名称:LongHashSet
方法名:allocateBuffers

LongHashSet.allocateBuffers介绍

[英]Allocate new internal buffers. This method attempts to allocate and assign internal buffers atomically (either allocations succeed or not).
[中]分配新的内部缓冲区。此方法尝试以原子方式分配和分配内部缓冲区(分配成功与否)。

代码示例

代码示例来源:origin: carrotsearch/hppc

/**
 * Ensure this container can hold at least the
 * given number of elements without resizing its buffers.
 * 
 * @param expectedElements The total number of elements, inclusive.
 */
@Override
public void ensureCapacity(int expectedElements) {
 if (expectedElements > resizeAt || keys == null) {
  final long[] prevKeys =  this.keys;
  allocateBuffers(minBufferSize(expectedElements, loadFactor));
  if (prevKeys != null && !isEmpty()) {
   rehash(prevKeys);
  }
 }
}

代码示例来源:origin: carrotsearch/hppc

/**
 * This method is invoked when there is a new key to be inserted into
 * the buffer but there is not enough empty slots to do so.
 * 
 * New buffers are allocated. If this succeeds, we know we can proceed
 * with rehashing so we assign the pending element to the previous buffer
 * (possibly violating the invariant of having at least one empty slot)
 * and rehash all keys, substituting new buffers at the end.  
 */
protected void allocateThenInsertThenRehash(int slot, long pendingKey) {
 assert assigned == resizeAt 
     && (( keys[slot]) == 0)
     && !((pendingKey) == 0);
 // Try to allocate new buffers first. If we OOM, we leave in a consistent state.
 final long[] prevKeys =  this.keys;
 allocateBuffers(nextBufferSize(mask + 1, size(), loadFactor));
 assert this.keys.length > prevKeys.length;
 // We have succeeded at allocating new data so insert the pending key/value at
 // the free slot in the old arrays before rehashing.
 prevKeys[slot] = pendingKey;
 // Rehash old keys, including the pending key.
 rehash(prevKeys);
}

代码示例来源:origin: harbby/presto-connectors

/**
 * Ensure this container can hold at least the
 * given number of elements without resizing its buffers.
 * 
 * @param expectedElements The total number of elements, inclusive.
 */
@Override
public void ensureCapacity(int expectedElements) {
 if (expectedElements > resizeAt || keys == null) {
  final long[] prevKeys =  this.keys;
  allocateBuffers(minBufferSize(expectedElements, loadFactor));
  if (prevKeys != null && !isEmpty()) {
   rehash(prevKeys);
  }
 }
}

代码示例来源:origin: sirensolutions/siren-join

@Override
protected void allocateBuffers(int arraySize) {
 long newMemSize = (arraySize + 1) * 8l; // array size + emptyElementSlot
 long oldMemSize = keys == null ? 0 : keys.length * 8l;
 // Adjust the breaker with the new memory size
 breaker.addEstimateBytesAndMaybeBreak(newMemSize, "<terms_set>");
 try {
  // Allocate the new buffer
  super.allocateBuffers(arraySize);
  // Adjust the breaker by removing old memory size
  breaker.addWithoutBreaking(-oldMemSize);
 }
 catch (BufferAllocationException e) {
  // If the allocation failed, remove
  breaker.addWithoutBreaking(-newMemSize);
  throw e;
 }
}

代码示例来源:origin: harbby/presto-connectors

/**
 * This method is invoked when there is a new key to be inserted into
 * the buffer but there is not enough empty slots to do so.
 * 
 * New buffers are allocated. If this succeeds, we know we can proceed
 * with rehashing so we assign the pending element to the previous buffer
 * (possibly violating the invariant of having at least one empty slot)
 * and rehash all keys, substituting new buffers at the end.  
 */
protected void allocateThenInsertThenRehash(int slot, long pendingKey) {
 assert assigned == resizeAt 
     && (( keys[slot]) == 0)
     && !((pendingKey) == 0);
 // Try to allocate new buffers first. If we OOM, we leave in a consistent state.
 final long[] prevKeys =  this.keys;
 allocateBuffers(nextBufferSize(mask + 1, size(), loadFactor));
 assert this.keys.length > prevKeys.length;
 // We have succeeded at allocating new data so insert the pending key/value at
 // the free slot in the old arrays before rehashing.
 prevKeys[slot] = pendingKey;
 // Rehash old keys, including the pending key.
 rehash(prevKeys);
}

相关文章