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。