Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

使用堆外内存+闭地址法散列,将key和value都序列化为二进制数组,利用unsafe模块直接申请堆外内存存储,每次插入需要序列化,每次查询需要反序列化,由于存储的内容为序列化的二进制数组,不包含指针和对象头,避免了额外的内存开销


实验

...

实验场景

基于海量时间序列元数据场景,测试在内存ID表中两者的性能

每时间序列标识长度为200字节,共有100万时间序列,其中measurement占用20字节

数据结构为:Map<DeviceID, Map<String, SchemaEntry>>

其中map分别使用java原生HashMap及基于堆外内存的map实现


实验目标

堆外内存map与java原生HashMap在以下方面的性能:

  • 插入性能(put)
  • 查询性能(get)
  • 内存占用

实验结果

插入性能(put)


查询性能(get)


内存占用


实验结论