Shared memory between processes. (Java, C++, Rust, etc.) Based on Java 19 Foreign Function & Memory API
Support Windows (CreateFileMapping), Linux and macOS (mmap and shmget).
Note Compared with standard input and output (anonymous pipes) on Windows, more than 2x performance improvement.
repositories {
maven { url 'https://www.jitpack.io' }
}
dependencies {
implementation 'com.github.ShirasawaSama:JavaSharedMemory:<version>'
}
tasks.withType(JavaCompile).each {
it.options.compilerArgs.add('--enable-preview')
}
// kotlin script
// tasks.withType<JavaCompile> {
// options.compilerArgs = options.compilerArgs + listOf("--enable-preview")
// }import cn.apisium.shm; public class Main { public static void main(String[] args) { // var shm = SharedMemory.open("test", 1024) try (var shm = SharedMemory.create("test", 1024)) { var buf = shm.toByteBuffer(); buf.put("Hello, World!".getBytes()); } } }
git submodule add https://github.com/ShirasawaSama/JavaSharedMemory.git
CMakeLists.txt:
add_subdirectory(JavaSharedMemory)
target_link_libraries(${PROJECT_NAME} java_shared_memory)main.cpp:
#include <jshm.h> int main() { auto shm = jshm::shared_memory::create("test", 1024); // auto shm = jshm::shared_memory::open("test", 1024); strcpy((char*)shm->address(), "Hello, World!"); delete shm; }
Shirasawa