数据库

首页 » 常识 » 问答 » OGG工作原理
TUhjnbcbe - 2021/2/9 0:18:00

前言

本文通过分析抽象内存分配器API梳理其基于堆内存、堆外内存分配的实现原理。最后走查了CompositeByteBuf这种类似数据库视图的实现原理。

一、内存分配器概览

堆外内存堆内存

分配方式优点缺点堆内存JVM负责内存的分配与回收数据过多会引起频繁GC和停顿;多一次拷贝,在用户态分配、I/O通信需要数据拷贝到内核态堆外内存I/O性能高,直接在内核态分配降低GC频率和停顿内存分配和收回比较慢、需要手动处理

内存分配器类图

字节缓存的分配出自ByteBufAllocator,其实现类AbstractByteBufAllocator(抽象类)、PooledByteBufAllocator(池化内存分配器)、UnpooledByteBufAllocator(非池化内存分配器)、PreferHeapByteBufAllocator(堆内存分配器)、PreferredDirectByteBufAllocator(堆外内存分配器)。

主要接口

接口说明ByteBufbuffer()分配一块字节缓存,由其实现类决定堆外内存或者堆内存ByteBufioBuffer()系统支持UNSAFE和CLEANER则优先分配堆外内存;否则分配堆内存。ByteBufheapBuffer()分配堆内存字节缓存区ByteBufdirectBuffer()分配堆外内存字节缓存区CompositeByteBuf
1
查看完整版本: OGG工作原理