我正在对Kafka主题流进行聚合并将其保存到内存中状态存储中。我想知道存储在数据中的确切大小,是否可以找到?
我查看了jconsole和Confluent Control Center上的jmx指标,但似乎没有任何关系,请问有什么我可以使用的东西吗?
答案 0 :(得分:2)
您可以通过KeyValueStore#approximateNumEntries()
获得内存中存储的键-值对的数量(对于默认的内存中实现,此数量实际上是准确的)。如果可以估算每个键值对的字节大小,则可以进行数学计算。
但是,通常在Java中很难估计对象的字节大小。问题在于,Java没有提供任何接收对象实际大小的方法。而且,对象可以嵌套,从而使它更加困难。最后,除了实际数据之外,每个对象总是有一些元数据开销,并且这些开销取决于JVM实现。