JVM如何处理本机代码

时间:2009-05-06 09:37:01

标签: jvm native

考虑一个我必须从我的Java程序中调用C ++代码的情况。 C ++代码创建了数千个对象。这些动态对象存储在哪里?我怀疑在JVM堆中,因为本机代码将是与JVM相同进程的一部分。

如果是,Java Garbage收集器线程的规则是否适用于C ++代码的对象?

1 个答案:

答案 0 :(得分:4)

对于第一个问题,C ++将使用自己的运行时分配资源,这与JVM无关 - JVM不知道此内存分配器中的任何活动。

对于第二个问题,Java垃圾收集器不会GC通过C ++分配的内存。您必须确保Java包装器启动内存释放。在java对象进行GC操作之前,运行时调用finalize()方法。默认值是从java.lang.Object继承的,基本上什么都不做。您可以覆盖它并将其用作挂钩以启动取消分配您的手动管理的内存。