Executing 5000 runs of simple setting of a value with liveconnect and starting the hprof-profiler shows a memory leak:
The 100000-run show this behavior:
The blue curve is the Heapspace. The red is the used Memory befor and the green curve the Memory after the garbage collection.
Does an other Implementation show an over behavior ? We tried the IBMJava2-1.4.1
:
Note that the mesure is bytes, but it shows the same behavior.
SITES BEGIN (ordered by live bytes) Thu Apr 8 14:24:40 2004 percent live alloc'ed stack class rank self accum bytes objs bytes objs trace name 1 18.24% 18.24% 240312 10013 240312 10013 316854 sun.reflect.NativeMethodAccessorImpl 2 12.16% 30.39% 160208 10013 160208 10013 316855 sun.reflect.DelegatingMethodAccessorImplThe stack is
TRACE 316854: sun.reflect.MagicAccessorImpl.An other Problem was the String-Argument for the JSObjectCall. We work arround and optimized it with the use of a String Buffer(MagicAccessorImpl.java:28) sun.reflect.MethodAccessorImpl. (MethodAccessorImpl.java:25) sun.reflect.NativeMethodAccessorImpl. (NativeMethodAccessorImpl.java:20) sun.reflect.ReflectionFactory.newMethodAccessor(ReflectionFactory.java:143) java.lang.reflect.Method.acquireMethodAccessor(Method.java:548) java.lang.reflect.Method.invoke(Method.java:493) sun.plugin.liveconnect.PrivilegedCallMethodAction.run(SecureInvocation.java:556) java.security.AccessController.doPrivileged(AccessController.java:Unknown line) sun.plugin.liveconnect.SecureInvocation$2.run(SecureInvocation.java:200) java.security.AccessController.doPrivileged(AccessController.java:Unknown line) TRACE 316855: sun.reflect.MagicAccessorImpl. (MagicAccessorImpl.java:28) sun.reflect.MethodAccessorImpl. (MethodAccessorImpl.java:25) sun.reflect.DelegatingMethodAccessorImpl. (DelegatingMethodAccessorImpl.java:18) sun.reflect.ReflectionFactory.newMethodAccessor(ReflectionFactory.java:145) java.lang.reflect.Method.acquireMethodAccessor(Method.java:548) java.lang.reflect.Method.invoke(Method.java:493) sun.plugin.liveconnect.PrivilegedCallMethodAction.run(SecureInvocation.java:556) java.security.AccessController.doPrivileged(AccessController.java:Unknown line) sun.plugin.liveconnect.SecureInvocation$2.run(SecureInvocation.java:200) java.security.AccessController.doPrivileged(AccessController.java:Unknown line)