我想知道缓存中使用了多少字节,这对确定合理的大小很有用。有哪些好方法可以统计 Google Guava 缓存中使用的字节数?
`stats` 方法不能提供我想要的信息;它不包括缓存中字节数的度量。
`asMap` 方法是我目前找到的最好的方法。在获得此信息后,可以使用 In Java, what is the best way to determine the size of an object? 中显示的一些技术之一。但是,老实说,至少从 Clojure 代码库的角度来看,这些技术似乎相当痛苦。为了避免一些依赖关系,我目前正在使用 Nippy,一个 Clojure 序列化库的简单快捷方式:
我正在从 Clojure 代码库中使用 Google Guava 缓存,但我的问题并不一定是特定于 Clojure 的;在大多数情况下,Java 交互都相对容易。 < p > 更新:回应下面的评论,我想首先知道是否忽略了Google Guava缓存API的有用部分。其次,我不知道我链接的通用方法(用于计算堆上内存使用量)是否适用于Guava。更广泛地说,找到缓存大小利用率是一个重要的用例,所以我有点惊讶它在网上没有更好的文档记录。
`stats` 方法不能提供我想要的信息;它不包括缓存中字节数的度量。
`asMap` 方法是我目前找到的最好的方法。在获得此信息后,可以使用 In Java, what is the best way to determine the size of an object? 中显示的一些技术之一。但是,老实说,至少从 Clojure 代码库的角度来看,这些技术似乎相当痛苦。为了避免一些依赖关系,我目前正在使用 Nippy,一个 Clojure 序列化库的简单快捷方式:
(count (nippy/freeze (.asMap cache)))
。我正在寻找更好的方法。我正在从 Clojure 代码库中使用 Google Guava 缓存,但我的问题并不一定是特定于 Clojure 的;在大多数情况下,Java 交互都相对容易。 < p > 更新:回应下面的评论,我想首先知道是否忽略了Google Guava缓存API的有用部分。其次,我不知道我链接的通用方法(用于计算堆上内存使用量)是否适用于Guava。更广泛地说,找到缓存大小利用率是一个重要的用例,所以我有点惊讶它在网上没有更好的文档记录。