11.2 本地memstore分配緩衝區

1、 生存期長的keyvalue實例刷寫到磁盤中--》老生代堆上生成孔洞-》孔洞愈來愈多,沒法足夠大的連續空間分配-》JRE使用 stop-the-world垃圾回收器-》重寫整個堆空間,並壓縮剩餘可用對象
java

2、 解決以上問題的方法 :web

  0.92版本後使用 本地memstore分配緩衝區(memstore-local allocation buffer) MSLAB
spa

  即,從堆中分配一樣大小的對象,當最終被回收時,堆中將留下固定大小的孔洞。orm

3、配置文件中 配置:對象

  1 經過hbase.hregion.memstore.mslab.enabled 來配置內存

  2 分配緩衝區大小:hbase.hregion.memstore.mslab.chunksize ,默認是2M,且是合理的。it

    根據本身的keyvalue實例大小來調整。io

  3 存儲緩衝區上邊界:hbase.hregion.memstore.mslab.max.allocation 屬性,默認256kb,配置

    超過這個值,直接在java堆中申請空間。垃圾回收

四 優缺點:

   優勢:推遲垃圾回收停頓的發生 

   缺點:1 浪費堆空間,不能充分利用

            2 使用緩衝區須要額外的內存複製工做,比直接使用keyvalues實例

相關文章
相關標籤/搜索