2014-01-29 30 views

回答

3

当JVM停止(中止或退出)时,操作系统将回收所有与该进程相关的内存。这包括在您的本机代码中分配的任何内存。

1

将会发生所有与普通C代码一样的事情。这个内存将被泄露,除非smth会回收它。对于大多数现代操作系统来说,这意味着当进程退出时资源将被释放。卸载JVM意味着什么。

1

避免这个问题的常用方法是让C分配的内存与一些java对象强烈关联,并在该对象上有一个终结器,它调用JNI方法释放内存。这样,垃圾收集器和库的用户就会清理干净的内容,不需要记住调用清理JNI方法。