【发布时间】:2018-10-23 20:10:28
【问题描述】:
我正在对 Kafka 主题流进行聚合并保存到内存状态存储中。我想知道内存中累积数据的确切大小,这个可以查到吗?
我查看了 jconsole 和 Confluent Control Center 上的 jmx 指标,但似乎没有任何相关信息,请问有什么我可以用来查找的吗?
【问题讨论】:
标签: apache-kafka apache-kafka-streams
我正在对 Kafka 主题流进行聚合并保存到内存状态存储中。我想知道内存中累积数据的确切大小,这个可以查到吗?
我查看了 jconsole 和 Confluent Control Center 上的 jmx 指标,但似乎没有任何相关信息,请问有什么我可以用来查找的吗?
【问题讨论】:
标签: apache-kafka apache-kafka-streams
您可以通过KeyValueStore#approximateNumEntries() 获取内存存储中存储的键值对的数量(对于默认的内存存储实现,这个数字实际上是准确的)。如果您可以估计每个键值对的字节大小,您就可以进行数学计算。
然而,在 Java 中估计一个对象的字节大小通常是相当困难的。问题是,Java 没有提供任何方法来接收对象的实际大小。此外,对象可以嵌套,使其更加困难。最后,除了实际数据之外,每个对象总会有一些元数据开销,而这个开销是依赖于 JVM 实现的。
【讨论】: