Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JVM如何处理本机代码 考虑一个我必须从java程序调用C++代码的例子。C++代码创建了数千个对象。这些动态对象存储在哪里?我怀疑在JVM堆中,因为本机代码将与JVM是同一进程的一部分 如果是,java垃圾回收线程的规则适用于C++代码的对象吗?< p>_Jvm_Native - Fatal编程技术网

JVM如何处理本机代码 考虑一个我必须从java程序调用C++代码的例子。C++代码创建了数千个对象。这些动态对象存储在哪里?我怀疑在JVM堆中,因为本机代码将与JVM是同一进程的一部分 如果是,java垃圾回收线程的规则适用于C++代码的对象吗?< p>

JVM如何处理本机代码 考虑一个我必须从java程序调用C++代码的例子。C++代码创建了数千个对象。这些动态对象存储在哪里?我怀疑在JVM堆中,因为本机代码将与JVM是同一进程的一部分 如果是,java垃圾回收线程的规则适用于C++代码的对象吗?< p>,jvm,native,Jvm,Native,JVM如何处理本机代码 考虑一个我必须从java程序调用C++代码的例子。C++代码创建了数千个对象。这些动态对象存储在哪里?我怀疑在JVM堆中,因为本机代码将与JVM是同一进程的一部分 如果是,java垃圾回收线程的规则适用于C++代码的对象吗?< p>对于第一个问题,C++将使用它自己的运行时分配资源,这与JVM无关。JVM不知道内存分配器中的任何活动。 第二个问题,java垃圾回收器不会对C++分配的内存进行GC。您必须确保Java包装器启动内存释放。在java对对象进行GC之前,运行时调

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


如果是,java垃圾回收线程的规则适用于C++代码的对象吗?

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

第二个问题,java垃圾回收器不会对C++分配的内存进行GC。您必须确保Java包装器启动内存释放。在java对对象进行GC之前,运行时调用

finalize()
方法。默认值继承自java.lang.Object,基本上不做任何事情。您可以覆盖它并将其用作钩子来启动手动管理内存的释放。

@Geek-yes。这都是同一进程的一部分,所以在C++中崩溃会降低JVMYES,它运行在JVM的相同进程中,并且肯定会崩溃。谢谢布瑞恩和CTW。我不明白。如何有一个进程,并有不同的内存分配不同的C++和java。堆内存不是进程地址空间的一部分。我认为只有堆栈上的对象才是地址空间的一部分。请注意。堆内存肯定在进程的地址空间内。在幕后,JVM和C++运行时都使用系统调用(例如SBRK())从O/S请求内存块。只要他们停留在他们要求的块的范围内,他们就不会被对方绊倒。谢谢CTW,你的回答非常有用。我在哪里可以读到更多关于它的信息。