Я хотел бы узнать, сколько байтов используется в кеше. Это полезно при определении разумного размера. Каковы хорошие способы подсчета количества байтов, используемых в кеше Google Guava?Байт, которые в настоящее время используются кешем Google 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)))
. Я ищу лучшие способы.
Я использую кэширование Google Guava из кодовой базы Clojure, но мой вопрос не обязательно специфичен для Clojure; В большинстве случаев взаимодействие с Java довольно легко.
Обновление: Некоторый контекст в ответ на комментарий ниже. Во-первых, я хотел бы знать, не упускаю из виду полезную часть API кэширования Google Guava. Во-вторых, я не знаю, применимы ли общие подходы, которые я связывал (для подсчета использования памяти в куче), хорошо для Гуавы. В более широком смысле поиск размера кеша является важным прецедентом, поэтому я немного удивлен, что он не лучше документирован в Интернете.
Как насчет этого вопроса делает его не точным дубликатом связанного вопроса? Вы хотите найти размер объекта, и вам становится грустно, что это непросто, и вы планируете сериализовать его и подсчитывать байты: это в точности основные моменты другого вопроса. – amalloy
@amalloy Обновлено выше.Этот вопрос не является * точным * дубликатом, хотя могут быть общности - так как я спросил в контексте Гуавы. Не очевидно (для меня, по крайней мере), что подходы, показанные в связанном вопросе, являются лучшими для этого варианта использования. –
Ответ, на который вы ссылаетесь, является «довольно болезненным», потому что нет никакого мучительного способа измерения использования памяти в байтах объектов Java, включая Guava Caches. Это не лучше документировано онлайн, потому что вам обычно лучше искать какую-то другую вещь для измерения. –