Slab: 保證JVM的堆記憶體對齊

banq發表於2013-06-20
Slab: guaranteed heap alignment on the JVM

隨著時間的推移,CPU時脈頻率已經相當快,但記憶體速度未能趕上。為了充分利用CPU,考慮記憶體資料結構對齊是很重要的,這樣能夠讓CPU快取(On-CPU Cache)趕上來,換句話說,需要良好的引用區域性性。

不幸的是,Java平臺的抽象記憶體分配方式使得它很難保證你的記憶體分配的效能。在大多數情況下,這是一個幸運:因為餓你不需要擔心你自己去管理記憶體!但是有時你需要實現一個演算法,以保證Java在這方面的不足。

開源Slab提供簡單的解決方案。


// Define your DataType
public interface GameEvent extends Cursor {
  public int getId();
  public void setId(int value);
  public long getStrength();
  public void setStrength(long value);
}

// Create an allocator for your DataType
Allocator eventAllocator = Allocator.of(GameEvent.class);

// Allocate 100 off heap GameEvent instances - sequentially in memory
GameEvent event = eventAllocator.allocate(100);

// Move to the index of the instance that you want to read from or write to
event.move(1);

// set and get values like a normal POJO
event.setId(6);
assertEquals(6, event.getId());
<p class="indent">

相關文章