diff --git a/java/com_spotify_voyager_jni_Index.cpp b/java/com_spotify_voyager_jni_Index.cpp index 5c510704..c2e2a2a9 100644 --- a/java/com_spotify_voyager_jni_Index.cpp +++ b/java/com_spotify_voyager_jni_Index.cpp @@ -766,7 +766,8 @@ void Java_com_spotify_voyager_jni_Index_nativeDestructor(JNIEnv *env, jobject self) { try { if (Index *index = getHandle(env, self, true)) { - free(index); + delete index; + setHandle(env, self, nullptr); } } catch (std::exception const &e) { if (!env->ExceptionCheck()) { diff --git a/java/src/main/java/com/spotify/voyager/jni/Index.java b/java/src/main/java/com/spotify/voyager/jni/Index.java index a518aad6..e48baee1 100644 --- a/java/src/main/java/com/spotify/voyager/jni/Index.java +++ b/java/src/main/java/com/spotify/voyager/jni/Index.java @@ -277,6 +277,15 @@ public void close() throws IOException { nativeDestructor(); } + @Override + protected void finalize() throws Throwable { + try { + nativeDestructor(); + } finally { + super.finalize(); + } + } + private native void nativeConstructor( SpaceType space, int numDimensions,