hbase启动后使用jconsole监控heap-par eden space,一直增长是什么原因,这段时间后台是在做什么消耗内存

图片1.png
已邀请:
匿名用户

匿名用户

赞同来自:

有请求吗?所有临时对象都是在young区经历生死的。

libis - HBase爱好者

赞同来自:

eden增长不是很正常嘛 可以先了解下jvm的gc

pengdp

赞同来自:

情况是这样的,使用get批量请求2000条数据发现heap增长了800M左右,不知道什么原因就一直排查,一个数据块是4k,就算2000条数据都处于不同的block也就8M左右,怎么会出现800M这么大的内存开销,后来我又直接使用shell测试,发现get或则scan一批数据也会出现这种情况,后来我就停掉hbase集群重启hbase集群,启动后没有请求,启动hbase集群监控regionserver发现young一直增长,情况是就是这样。
匿名用户

匿名用户

赞同来自:

建议熟悉下GC的原理,你提到了Eden区,用的应该是CMS,百度下"CMS GC”。 
 
简单说,eden区存放的就是生命周期很短(几十ms)的对象,用完了,eden区会通过ygc释放掉这些临时对象。所以你观察到的现象是符合预期的。
 
get 1条数据,生成的临时对象总大小会远大于数据本身,包括对象的开销,中间的一些变换,所有用到new的地方,都会生成临时对象。

qgxiaozhan

赞同来自:

因为你rpc请求也要产生对象......

要回复问题请先登录注册