diff --git a/libvlc/jni/libvlcjni-media.c b/libvlc/jni/libvlcjni-media.c
index e9c1d1be115d9fd71c26ada45be7072618243728..0161db8a8dc9b72c7d25cde7955e0f567d03019f 100644
--- a/libvlc/jni/libvlcjni-media.c
+++ b/libvlc/jni/libvlcjni-media.c
@@ -535,6 +535,7 @@ tracklist_to_jobjectArray(JNIEnv *env, libvlc_media_tracklist_t *tracklist)
         jobject jtrack = media_track_to_jobject(env, track);
 
         (*env)->SetObjectArrayElement(env, array, i, jtrack);
+        (*env)->DeleteLocalRef(env, jtrack);
     }
 
     return array;
@@ -712,6 +713,7 @@ Java_org_videolan_libvlc_Media_nativeGetSlaves(JNIEnv *env, jobject thiz)
                                            p_slave->i_type, p_slave->i_priority,
                                            juri);
         (*env)->SetObjectArrayElement(env, array, i, jslave);
+        (*env)->DeleteLocalRef(env, jslave);
         (*env)->DeleteLocalRef(env, juri);
     }
 
diff --git a/libvlc/jni/libvlcjni-mediadiscoverer.c b/libvlc/jni/libvlcjni-mediadiscoverer.c
index f42c3c904626dc3fdef1e1add8f6813c501af965..899df5942701983cafd42c3f678b5f526cd902b0 100644
--- a/libvlc/jni/libvlcjni-mediadiscoverer.c
+++ b/libvlc/jni/libvlcjni-mediadiscoverer.c
@@ -139,6 +139,7 @@ Java_org_videolan_libvlc_MediaDiscoverer_nativeList(JNIEnv *env, jobject thiz,
         jobject jservice = service_to_object(env, pp_services[i]);
 
         (*env)->SetObjectArrayElement(env, array, i, jservice);
+        (*env)->DeleteLocalRef(env, jservice);
     }
 
 error:
diff --git a/libvlc/jni/libvlcjni-mediaplayer.c b/libvlc/jni/libvlcjni-mediaplayer.c
index 51a2bfc6dac53ab01cf6d145cbfcc6113f1e38e4..4e1538eeadb6ea53dbe10223e578094b9372b16b 100644
--- a/libvlc/jni/libvlcjni-mediaplayer.c
+++ b/libvlc/jni/libvlcjni-mediaplayer.c
@@ -658,7 +658,10 @@ Java_org_videolan_libvlc_MediaPlayer_nativeGetTitles(JNIEnv *env, jobject thiz)
         jobject jtitle = mediaplayer_title_to_object(env, pp_titles[i]);
 
         if (jtitle)
+        {
             (*env)->SetObjectArrayElement(env, array, i, jtitle);
+            (*env)->DeleteLocalRef(env, jtitle);
+        }
     }
 
 error:
@@ -719,7 +722,10 @@ Java_org_videolan_libvlc_MediaPlayer_nativeGetChapters(JNIEnv *env,
         jobject jchapter = mediaplayer_chapter_to_object(env, pp_chapters[i]);
 
         if (jchapter)
+        {
             (*env)->SetObjectArrayElement(env, array, i, jchapter);
+            (*env)->DeleteLocalRef(env, jchapter);
+        }
     }
 
 error:
diff --git a/libvlc/jni/libvlcjni-rendererdiscoverer.c b/libvlc/jni/libvlcjni-rendererdiscoverer.c
index aa3e6cc57ec84d87aa93f3891bb64f9fc78b24eb..85057070692ed931c8b8064e006745a28a85ee95 100644
--- a/libvlc/jni/libvlcjni-rendererdiscoverer.c
+++ b/libvlc/jni/libvlcjni-rendererdiscoverer.c
@@ -188,6 +188,7 @@ Java_org_videolan_libvlc_RendererDiscoverer_nativeList(JNIEnv *env, jobject thiz
         jobject jservice = service_to_object(env, pp_services[i]);
 
         (*env)->SetObjectArrayElement(env, array, i, jservice);
+        (*env)->DeleteLocalRef(env, jservice);
     }
 
 error: