JNI的Java内存管理

 2023-01-20    331  

问题描述

我有两个问题:

  1. 如果我有JNI调用方法,而JNI方法泄漏了内存.此方法完成后,JVM垃圾收集器将能够收回该内存.我听说JVM无法管理JNI使用的堆空间吗?但是JNI使用的内存是Java进程使用的内存的一部分?

    JNI的Java内存管理

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

推荐答案

  1. 否:” JNI框架不提供任何自动垃圾收集,用于通过在本机侧执行的代码分配的非JVM内存资源”( wikipedia ).
  2. no,java有确实是ProcessBuilder.可以使用 mappedbytebuffer ./li>

其他推荐答案

  1. 您需要在本机代码中创建的任何OS资源,例如文件描述符,内存地址(由malloc.等),因为它们不使用任何JVM实例绑定.
  2. 您可以考虑使用html?page=3″ rel=” rel=”rel=”rel=”rel=”rel=”rel=”rel=”r = -mapped文件(示例).

  3. 您可以在IPC上下文中使用RPC(在计算机和计算机之间),例如套接字,Web服务,JMS等.

其他推荐答案

  1. 很有可能是的 – 尽管我不确定是否没有任何清除记忆的方法.
  2. 看一下 processBuilder – 排除JNI以实现IPC可能有帮助.

以上所述是小编给大家介绍的JNI的Java内存管理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26137.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。