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。