Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
考虑一个我必须从我的 Java 程序中调用 C++ 代码的情况。C++ 代码创建了数千个对象。这些动态对象存储在哪里?我怀疑在 JVM 堆中,因为本机代码将成为与 JVM 相同的进程的一部分。
如果是,Java 垃圾收集器线程的规则是否适用于 C++ 代码的对象?
对于第一个问题,C++ 将使用它自己的运行时分配资源,这与 JVM 无关——JVM 不知道此内存分配器中的任何活动。
对于第二个问题,Java 垃圾收集器不会对 C++ 分配的内存进行 GC。您必须确保您的 Java 包装器启动内存释放。在对象被 java GC 之前,运行时调用该finalize()方法。默认是从 java.lang.Object 继承的,基本上什么都不做。您可以覆盖它并将其用作挂钩来启动释放手动管理的内存。
finalize()