HeapByteBuffer和DirectByteBuffer
文章首发于:clawhub.club
最近在用java操作LMDB,看看能不能代替BDB实现本地持久化队列的功能,碰到了HeapByteBuffer与DirectByteBuffer的坑。
HeapByteBuffer
内容维护在JVM中,容易做到垃圾回收,但是也容易被垃圾回收所影响,在flush到远程的时候,会先拷贝数据到直接内存,再发送。
DirectByteBuffer
其数据分配到堆外内存中,所以很多框架都会选择它进行网路交互。避免了数据的额外拷贝,也不会收到垃圾回收的影响。
应用场景
DirectByteBuffer适用于频繁的native IO操作,高吞吐量,低延迟。
HeapByteBuffer适用于数据量小,方便垃圾回收的场景。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ClawHub的技术分享!