#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