Кэш BufferedInputStream? Wise?
Я строю что-то, связанное с кешами, и хочу понять, разумно ли кешировать BufferedInputStream, пока я закрываю базовый InputStream.
В моем случае я работаю над кэшированием веб-вызовов (я знаю, что мы кешируем в HTTP и хорошо знаем, как это сделать), поэтому объекты разбираются на множество разных типов, я читаю InputStream и анализирую его в соответствующий тип, и, как я понимаю, BufferedInputStream будет хранить все байты в нем. Я не вижу ничего плохого в кешировании, сбросе и восстановлении!
Нужно знать от кого-то опытного! Спасибо!
1 ответ
Он будет работать только в том случае, если исходный входной поток содержит меньше данных, чем размер буфера вашего BufferedInputStream, по умолчанию должно быть 8 КБ.
Также не стоит полагаться на это, он не предназначен для повторного использования, буфер был только для того, чтобы избежать слишком большого числа чтений в небольшом размере. Из-за своей цели вы не можете гарантировать, что реализация сделает то, что вы хотите, она теоретически получит доступ к базовому потоку в любое время.
Хотя вы можете зайти в исходный код, чтобы подтвердить поведение, если вы готовы сделать это, почему бы не клонировать и не создать свой собственный CachedInputStream?