Вы можете использовать ByteBuffer. Самый простой подход - использовать ByteBuffer.allocateDirect()
, используя адрес, выделенный Java. Если вам нужно использовать адрес, предоставленный C, вы можете изменить адрес и ограничение (для размера), чтобы оно указывало на то, что вам нравится.
Если вы предпочитаете использовать что-то более низкого уровня, в JVM Oracle вы можете использовать методы Unsafe.getXxxx(long address)
или Unsafe.setXxxx(long address, T value)
, но их следует использовать с осторожностью, поскольку неправильное использование может привести к сбою JVM. (Точно так же, как использование недопустимого указателя в C). Эти методы используются ByteBuffer и превращаются в одну инструкцию машинного кода, которая оптимизируется.