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。