[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [m2e-dev] memory leak: MavenClasspathContainer instances grow in JavaModelListener.resolvedContainers
|
I do not believe IClasspathContainer implementations are required to
provide #hashCode and #equals implementation. This is not
specified in IClasspathContainer javadoc and these methods are not
implemented by commonly used classpath container implementations (jre
system library, junit, pde plugin dependencies).
--
Regards,
Igor
On 12-04-22 1:56 PM, Martin Koci wrote:
Hi,
I found a memory leak (probably). Tested environment: Indigo SR2, web
tools 3.3.2, m2e 1.1 M6
Use case: repeatly perform "Update project". Instances of
org.eclipse.m2e.jdt.internal.MavenClasspathContainer grow constantly.
Analysis of heap dumps performed with Memory Analyzer shows, that
immediate dominator for MavenClasspathContainer are
org.eclipse.jem.internal.adapters.jdom.JavaReflectionSynchronizer
instances and its 'resolvedContainers' attribute (from JavaModelListener
parent).
org.eclipse.jem.internal.adapters.jdom.JavaReflectionSynchronizer is a
class from org.eclipse.jem.workbench bundle ( comes with WTP).
This listener is installed for project with
"org.eclipse.jem.workbench.JavaEMFNature" nature (does add this nature
m2e or m2e-wtp automatically ?)
I don't know exactly where the problem is, only two ideas:
1)
code from
org.eclipse.jem.workbench.utility.JavaModelListener.processDelta(IJavaElementDelta):
if (((flags& IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0)&& !
resolvedContainers.isEmpty()){
resolvedContainers.clear();
}
there is a flag F_RESOLVED_CLASSPATH_CHANGED - maybe m2e should set this
flag?
2) JavaModelListener uses container as key into HashMap
resolvedContainers.put(container, containerEntries);
but MavenClasspathContainer class has equals/hashCode from
java.util.Object - maybe implement equals/hashCode
MavenClasspathContainer with some logical equality?
I'll create a issue for this in bugzilla and attach screenshot from
Memory Analyzer.
Regards,
Martin
_______________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-dev