JNI 的 Java 内存管理

Gee*_*eek 5 java heap java-native-interface

我有两个问题:

  1. 如果我有一个对方法的 JNI 调用并且 JNI 方法泄漏内存怎么办。一旦此方法完成,JVM 垃圾收集器将能够取回该内存。听说 JVM 不管理 JNI 使用的堆空间?但是JNI使用的内存是Java进程使用的内存的一部分?

  2. 使用JNI来实现IPC是绝对必要的吗?什么是其他流行的 Java 技术,或者是否有开源库来实现 Java 中的共享内存?

Fre*_*Foo 3

  1. 否:“JNI 框架不为在本机端执行的代码分配的非 JVM 内存资源提供任何自动垃圾收集”(维基百科)。
  2. 不,Java 有套接字,实际上还有 ProcessBuilder。共享内存可以通过MappedByteBuffer来实现。