Slab: 保證JVM的堆記憶體對齊
Slab: guaranteed heap alignment on the JVM
隨著時間的推移,CPU時脈頻率已經相當快,但記憶體速度未能趕上。為了充分利用CPU,考慮記憶體資料結構對齊是很重要的,這樣能夠讓CPU快取(On-CPU Cache)趕上來,換句話說,需要良好的引用區域性性。
不幸的是,Java平臺的抽象記憶體分配方式使得它很難保證你的記憶體分配的效能。在大多數情況下,這是一個幸運:因為餓你不需要擔心你自己去管理記憶體!但是有時你需要實現一個演算法,以保證Java在這方面的不足。
開源Slab提供簡單的解決方案。
隨著時間的推移,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"> |
相關文章
- 遺失的JVM堆記憶體JVM記憶體
- JVM堆記憶體詳解JVM記憶體
- JVM堆記憶體設定JVM記憶體
- 記憶體對齊記憶體
- 探索JVM的垃圾回收(堆記憶體)JVM記憶體
- JVM 堆記憶體設定原理JVM記憶體
- Go高效能程式設計-瞭解記憶體對齊以及Go中的型別如何對齊保證Go程式設計記憶體型別
- GO 記憶體對齊Go記憶體
- 理解記憶體對齊記憶體
- JVM堆外記憶體問題排查JVM記憶體
- eclipse設定JVM記憶體堆EclipseJVM記憶體
- jvm堆記憶體和GC簡介JVM記憶體GC
- 結構體記憶體對齊結構體記憶體
- C++ 記憶體對齊C++記憶體
- 記憶體位元組對齊記憶體
- 關於記憶體對齊記憶體
- C# 記憶體對齊C#記憶體
- 【JVM之記憶體與垃圾回收篇】堆JVM記憶體
- 關於JVM堆外記憶體的一切JVM記憶體
- iOS 記憶體位元組對齊iOS記憶體
- C語言記憶體對齊C語言記憶體
- 【JVM】堆體系結構及其記憶體調優JVM記憶體
- 探索JVM的堆記憶體分佈:官方圖片展示JVM記憶體
- 使用mtrace追蹤JVM堆外記憶體洩露JVM記憶體洩露
- Linux 記憶體區管理 slabLinux記憶體
- JVM 記憶體模型 記憶體分配,JVM鎖JVM記憶體模型
- c 結構體記憶體對齊詳解結構體記憶體
- C++ struct結構體記憶體對齊C++Struct結構體記憶體
- JS中的棧記憶體、堆記憶體JS記憶體
- 面試題:JVM在Java堆中對物件的建立、記憶體結構、訪問方式面試題JVMJava物件記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- iOS探索 記憶體對齊&malloc原始碼iOS記憶體原始碼
- C/C++記憶體對齊詳解C++記憶體
- C/C++記憶體對齊原則C++記憶體
- JVM原始碼分析之堆外記憶體完全解讀JVM原始碼記憶體
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化
- 記憶體堆疊記憶體
- JVM記憶體JVM記憶體