За предложение @Ferrybig, я делаю свой комментарий ответом!
ByteBuf.array () возвращает фактический резервный массив, как вы указали ...
Как только вы отказались от своего дескриптора / ссылки на него, и после этого счетчик ссылок упал до 0 (либо сразу, либо когда все остальное откажется от его требования), все ставки отменяются.
Если вам нужно сохранить то, что находится в буфере, тогда ваш MyBuffer должен будет взять копию массива, который он получает в своем конструкторе.
Я был укушен этим раньше, когда массив был переназначен wayyyy после того, как я первоначально использовал его. Когда я вернулся к этому - бум - он был повторно использован, и мои данные исчезли.
Так что, возможно, стоит добавить флаг «copy» в конструктор MyBuffer, указывающий, нужно ли копировать входящий массив или нет.