Details
-
Bug
-
Status: Reopened
-
Major
-
Resolution: Unresolved
-
2.2
-
None
-
Operating System: Windows XP
Platform: PC
-
36162
-
Components: Sitemap
-
Components: Sitemap
Description
I'm currently looking into a memory leak issue at Apache Forrest. Forrest's
site currently needs to be built with -Xmx128m because of this. I believe the
issue is originated at Cocoon's LinkRewriterTransformer or XMLFileModule.
A memory profiler shows lots (30MB+) of DOM DocumentImpls (150+ objects), which
get referenced by XMLFileModule.DocumentHelper. Their URIs are linkmap-xxx.
LinkRewriterTransformer#createTransformedLink(String) uses a InputModuleHelper,
which seems to reference a XMLFileModule.
...
newLink = (String) modHelper.getAttribute(this.objectModel,
^^^^^^^^^
...
The XMLFileModule keeps the visited documents in a map, which is where they
build up.
Just for testing, I changed XMLFileModule#getDocumentHelper(Configuration) from
this.documents.put(src, new DocumentHelper(reload, cache, src, this));
to
return new DocumentHelper(reload, cache, src, this);
Thus, a new DocumentHelper is created every time, instead of caching them. The
result: No more memory problems, Apache Forrest's site builds again with -Xmx32.
Ron
site currently needs to be built with -Xmx128m because of this. I believe the
issue is originated at Cocoon's LinkRewriterTransformer or XMLFileModule.
A memory profiler shows lots (30MB+) of DOM DocumentImpls (150+ objects), which
get referenced by XMLFileModule.DocumentHelper. Their URIs are linkmap-xxx.
LinkRewriterTransformer#createTransformedLink(String) uses a InputModuleHelper,
which seems to reference a XMLFileModule.
...
newLink = (String) modHelper.getAttribute(this.objectModel,
^^^^^^^^^
...
The XMLFileModule keeps the visited documents in a map, which is where they
build up.
Just for testing, I changed XMLFileModule#getDocumentHelper(Configuration) from
this.documents.put(src, new DocumentHelper(reload, cache, src, this));
to
return new DocumentHelper(reload, cache, src, this);
Thus, a new DocumentHelper is created every time, instead of caching them. The
result: No more memory problems, Apache Forrest's site builds again with -Xmx32.
Ron
Attachments
Issue Links
- blocks
-
FOR-591 MaxMemory needs increasing for large document sets: Memory Leak with XMLFileModule
- Closed