java memcopy DirectBuffer

#java #memcpy #bytebuffer

#java #memcpy #bytebuffer

Вопрос:

Привет, я работаю с прямыми буферами в Java, и мне нужно иметь быструю копию памяти для них. В C есть команда memcpy, а в Java Arrays у меня есть Arrays.copyOf. Но нет способа использовать массивы вместо прямых буферов, потому что мне нужно перенести их в OpenGL.

Комментарии:

1. Вы имеете в виду, что у вас есть прямой байтбуфер и вам нужна (быстрая) копия этого буфера?

Ответ №1:

Если вы имеете в виду «прямые» байтбуферы, то существует метод put, который принимает другие ByteBuffer экземпляры, чтобы вы могли копировать их.

Ответ №2:

Вы можете просто использовать put() либо с byte[], либо с ByteBuffer, при этом будет использоваться собственный вызов memcpy ни в одном из них в Sun / Oracle JDK.

Для прямого байтового буфера и буфера кучи put() используются методы Bits.copyFromArray() и Unsafe.copyMemory() .

Ответ №3:

проверьте System.arrayCopy это самый быстрый способ скопировать часть массива в java