检查Gemfire缓存中对象的大小

时间:2011-05-13 10:22:29

标签: java caching serialization in-memory-database

有没有人知道检查存储在gemfire缓存中的对象大小的方法?甚至是区域本身的大小(以MB为单位,而不是它们包含的对象数)。

我们正在调整我们的一些物体的构成,我想看看我们在Gemfire序列化它们和最终产品的大小所花费的时间上有多少/更少的压力......

干杯,戴夫。

2 个答案:

答案 0 :(得分:3)

如果其他人踏上这条道路,这里有几篇最近发表的文章可能与这个问题有关:

Data Sizer Java Utility Class http://communities.vmware.com/docs/DOC-20695

也许,不够具体,但仍然非常有用 GemFire内存大小调整指南http://communities.vmware.com/docs/DOC-20714

答案 1 :(得分:1)

回答您的问题可能有点迟,但您可以尝试以下方法之一来获取缓存中对象的大小:

1)使用可以从vmware网站下载的GFMon。它会告诉你每个区域的字节大小。

2)使用CachedDeserializableFactory.calcSerializedMemSize(object)方法,它会在序列化后告诉你内存中对象的大小。

您需要注意,您的对象不会始终以序列化形式存储在缓存中。要强制在缓存中序列化对象,可以使用系统属性gemfire.PREFER_SERIALIZED = true。

例如: java -Dgemfire.PREFER_SERIALIZED = true com.example.MyCacheServer