Я получил UnsupportedOperationException в следующем коде:Почему получить UnsupportedOperationException на ByteBuffer.allocateDirect (10) .array()
byte[] temp = ByteBuffer.allocateDirect(10).array();
Я проверил java specification, он говорит:
UnsupportedOperationException - Если этот буфер не подкрепляется доступным массивом
Вот мои вопросы:
(1) Это означает, что если byteBuffer создается через ByteBuffer.allocateDirect
, этот byteBuffer всегда не поддерживается доступным массивом?
(2) Я знаю, что этот byteBuffer выделяется вне кучи Java, но какова реализация этого распределения. Может быть, через системный вызов системы? Итак, доступен ли массив, зависит от используемой ОС?
Из документов для 'allocateDirect':« Независимо от того, имеется ли массив подкачки, он не указан ». Так что да, это все зависит от реализации ... –