Replaced usage of "standard" Java ByteArrayOutputStream with custom implementation, because the former returns a copy of the internal byte buffer, which means additional memory allocation. Since this operation is performed intensively (used in readBandRasterData method), we don't need extra allocations.