HashMap最佳实践经验

  • 2020 年 2 月 18 日
  • 筆記

实验1(主实验)-HashMap最大承载数据量测试

实验概述:

将n条随机生成的KV插入一个hashMap。

实验配置:

物理内存-24GB。

JVM使用默认配置,即最大堆内存默认为6GB(物理内存的四分之一)。

KV的长度设定和大小估算:

每个key 20个字符 , value 80个字符 , 一个KV约为2KB。

实验方法及实验现象:

随机生成并插入10 000 000 条KV(20GB),能在5分钟之内插入完成。

随机生成并插入100 000 000 条KV(200GB),在第25分钟,出现JVM内存不够的情况,无法插入完成。

实验结论及分析:

JVM最大堆内存为6GB时,只用于HashMap的对象,HashMap的对象中可以容纳原始大小超过20GB的数据,这些数据持久化的到单个磁盘文件上约为10GB(磁盘文件大小测试实验见实验2)。

从实现现象来看,HashMap有压缩等其他结约存储空间的方式。

辅助实验-实验1中HashMap存储数据量大小测试

实验概述:

实验1将n条随机生成的KV插入一个hashMap,实验2在实验1的基础上将HashMap的所有KV持久化的磁盘上。

实验配置:

物理内存-24GB。

JVM使用默认配置,即最大堆内存默认为6GB(物理内存的四分之一)。

KV的长度设定和大小估算:

每个key 20个字符 , value 80个字符 , 一个KV约为2KB。

实验方法及实验现象:

随机生成并插入10 000 000 条KV(20GB),能在5分钟之内插入完成。

将HashMap的所有KV写入自己设计的文件版KV数据库。

持久化以后的文本文件刚好为10GB。