我有一个 Java 应用程序,它使用 spymemcached 库 (http://code.google.com/p/spymemcached) 来读取对象并将对象写入 memcached。
该应用程序始终将相同类型的对象缓存到 memcached。缓存的对象始终是 5 或 6 个 java.util.Strings 的 ArrayList。使用 SizeOf 库 (http://www.codeinstructions.com/2008/12/sizeof-for-java.html),我确定 ArrayList 的平均深度大小约为 800 字节。
总的来说,我为 memcached 分配了 12 GB 的 RAM。我的问题是:memcached 可以容纳多少个这些对象?
我不清楚使用 SizeOf 中的“800 字节”度量是否正确,或者这是否具有误导性。例如,SizeOf 将每个 char 计为 2 个字节。我知道我的字符串中的每个字符都是常规的 ASCII 字符。我相信 spymemcached 使用 Java 序列化,我不确定这是否会导致每个字符占用 1 个字节或 2 个字节。
另外,我不知道 memcached 使用了多少每个对象的开销。因此,计算应考虑 memcached 用于其自身内部数据结构的 RAM。
我不需要一个 100% 准确的数字。粗略的粗略计算会很棒。