Вы используете украшение для буферизации входного потока. Как это
InputStream in = ...; // your underlying stream (e.g. FileInputStream)
ObjectInputStream oin = new ObjectInputStream(new BufferedInputStream(in));
Это гарантирует, что каждый вызов ObjectInputStream не вызовет базовый поток in
, такой как системный вызов чтения файла ОС. Вместо этого каждый вызов направляется в буферизованный входной поток, который выбирает и кэширует блоки данных (по умолчанию 8 КБ) и считывает их. Это быстрее, поскольку чтение из потока теперь является локальным вызовом метода в java, а накладные расходы на вызов метода системного вызова встречаются реже. Согласованность кэша и оптимизация JIT также играют роль в повышении производительности.