有没有人知道检查存储在gemfire缓存中的对象大小的方法?甚至是区域本身的大小(以MB为单位,而不是它们包含的对象数)。
我们正在调整我们的一些物体的构成,我想看看我们在Gemfire序列化它们和最终产品的大小所花费的时间上有多少/更少的压力......
干杯,戴夫。
答案 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