Details
-
Bug
-
Resolution: Fixed
-
P3
-
8, 9
Backports
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8176667 | 10 | Kevin Walls | P3 | Resolved | Fixed | b03 |
JDK-8197260 | 8u192 | Kevin Walls | P3 | Resolved | Fixed | b01 |
JDK-8195265 | 8u172 | Kevin Walls | P3 | Resolved | Fixed | b03 |
JDK-8190031 | 8u162 | Kevin Walls | P3 | Resolved | Fixed | b04 |
JDK-8177404 | 8u161 | Kevin Walls | P3 | Resolved | Fixed | b01 |
JDK-8175821 | 8u152 | Kevin Walls | P3 | Resolved | Fixed | b02 |
JDK-8185188 | 8u144 | Kevin Walls | P3 | Resolved | Fixed | b31 |
JDK-8183056 | 8u141 | Kevin Walls | P3 | Resolved | Fixed | b31 |
JDK-8177492 | 8u131 | Kevin Walls | P3 | Resolved | Fixed | b31 |
JDK-8176249 | 8u121 | Kevin Walls | P3 | Closed | Fixed | b35 |
JDK-8192177 | emb-8u161 | Kevin Walls | P3 | Resolved | Fixed | b01 |
Description
A DESCRIPTION OF THE PROBLEM :
Calling findSpecial is leaking memory.
THE PROBLEM WAS REPRODUCIBLE WITH -Xint FLAG: Did not try
THE PROBLEM WAS REPRODUCIBLE WITH -server FLAG: Yes
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
import java.lang.invoke.*;
public class Leak {
public void callMe() {
}
public static void main(String[] args) throws Throwable {
Leak leak = new Leak();
while(true) {
MethodHandles.Lookup lookup = MethodHandles.lookup();
MethodType mt = MethodType.fromMethodDescriptorString("()V", Leak.class.getClassLoader());
// findSpecial leaks some native mem
MethodHandle mh = lookup.findSpecial(Leak.class, "callMe", mt, Leak.class);
mh.invokeExact(leak);
}
}
}
EXPECTED VERSUS ACTUAL BEHAVIOR :
Expected: No increase in memory
Result: Increase in memory
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.lang.invoke.*;
public class Leak {
public void callMe() {
}
public static void main(String[] args) throws Throwable {
Leak leak = new Leak();
while(true) {
MethodHandles.Lookup lookup = MethodHandles.lookup();
MethodType mt = MethodType.fromMethodDescriptorString("()V", Leak.class.getClassLoader());
// findSpecial leaks some native mem
MethodHandle mh = lookup.findSpecial(Leak.class, "callMe", mt, Leak.class);
mh.invokeExact(leak);
}
}
}
---------- END SOURCE ----------
Attachments
Issue Links
- backported by
-
JDK-8175821 [REDO] MemberNameTable doesn't purge stale entries
- Resolved
-
JDK-8176667 [REDO] MemberNameTable doesn't purge stale entries
- Resolved
-
JDK-8177404 [REDO] MemberNameTable doesn't purge stale entries
- Resolved
-
JDK-8177492 [REDO] MemberNameTable doesn't purge stale entries
- Resolved
-
JDK-8183056 [REDO] MemberNameTable doesn't purge stale entries
- Resolved
-
JDK-8185188 [REDO] MemberNameTable doesn't purge stale entries
- Resolved
-
JDK-8190031 [REDO] MemberNameTable doesn't purge stale entries
- Resolved
-
JDK-8192177 [REDO] MemberNameTable doesn't purge stale entries
- Resolved
-
JDK-8195265 [REDO] MemberNameTable doesn't purge stale entries
- Resolved
-
JDK-8197260 [REDO] MemberNameTable doesn't purge stale entries
- Resolved
-
JDK-8176249 [REDO] MemberNameTable doesn't purge stale entries
- Closed
- clones
-
JDK-8152271 MemberNameTable doesn't purge stale entries
- Closed
- duplicates
-
JDK-8166852 JavaScript engine eval() method causes JVM Young GC to pauses seconds
- Resolved
- relates to
-
JDK-8013267 move MemberNameTable from native code to Java heap, use to intern MemberNames
- Open
-
JDK-8166852 JavaScript engine eval() method causes JVM Young GC to pauses seconds
- Resolved
-
JDK-8174749 Use hash table/oops for MemberName table
- Resolved