Java中GCHandle.Alloc()的等效代码?

Java中GCHandle.Alloc()的等效代码?,java,memory,jna,Java,Memory,Jna,我正在使用JNA将C DLL库包装成Java。该库提供了一个C#包装器。在C#wrapper的构造函数中,创建了一个对象,该对象的内存由 this.m_object = _CreateObject(); this.m_objectGCH = GCHandle.Alloc(this.m_object, GCHandleType.Pinned); m_对象是指向所创建对象的整数,对象的内存由GCHandle.Alloc()固定。我可以创建一个对象并通过JNA获取指向该对象的指针。但是,我不知道如何

我正在使用JNA将C DLL库包装成Java。该库提供了一个C#包装器。在C#wrapper的构造函数中,创建了一个对象,该对象的内存由

this.m_object = _CreateObject();
this.m_objectGCH = GCHandle.Alloc(this.m_object, GCHandleType.Pinned);

m_对象是指向所创建对象的整数,对象的内存由GCHandle.Alloc()固定。我可以创建一个对象并通过JNA获取指向该对象的指针。但是,我不知道如何在Java中固定对象内存。

Java的GC不知道为对象分配的本机内存。如果您负责在将来的某个时间点删除内存,那么必须在Java代码中通过调用对象分配建议的任何“free”方法显式地删除内存


如果您需要确保Java不会GC给定的Java对象,那么您需要确保存在对它的引用,直到您不再需要它为止(最简单的方法是将它存储在静态(类)变量中)。

Java中没有直接的等价物。如果您提供更多的上下文(即,您如何/为什么尝试使用对象w.r.t.JNA),那么我们可能会建议解决方法。