changeset 9445:85f20f6ec580

8264816: Weak handles leak causes GC to take longer Reviewed-by: zgu, shade
author ddong
date Wed, 07 Apr 2021 15:36:03 +0800
parents 52ef318dba48
children f8c527c9467f
files src/share/vm/prims/methodHandles.cpp
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/prims/methodHandles.cpp	Mon Jun 17 14:31:49 2019 -0700
+++ b/src/share/vm/prims/methodHandles.cpp	Wed Apr 07 15:36:03 2021 +0800
@@ -972,6 +972,13 @@
       return mname;
     }
   }
+
+  if (new_index < len) {
+    assert(JNIHandles::resolve(this->at(new_index)) == NULL, "sanity");
+    // destroy the old handle
+    JNIHandles::destroy_weak_global(this->at(new_index));
+  }
+
   // Not found, push the new one, or reuse empty slot
   this->at_put_grow(new_index, mem_name_wref);
   return new_mem_name;