Please review the thread. The thread local is not the cause of OOM in
1.5 and later JVM, especially give the size of the objects they
references.
Manually clearing object references is a waste of code/resources.
That is what the GC does...
On Feb 25, 2008, at 8:34 AM, Christian Kohlschütter (JIRA) wrote:
[ https://issues.apache.org/jira/browse/LUCENE-1186?
page=com.atlassian.jira.plugin.system.issuetabpanels:comment-
tabpanel&focusedCommentId=12572092#action_12572092 ]
Christian Kohlschütter commented on LUCENE-1186:
------------------------------------------------
This issue is rather a prophylactic one -- until now, I have not
encountered an OutOfMemoryError or slowdown etc.
However, I think it is a good practice to release all resources as
soon as an object is not used anymore. For SegmentReader, this is
the case when #close() is called. More, as noted in LUCENE-436,
some VMs (also recent ones) indeed seem to have problems when
ThreadLocal values are not released, so I think it is not just a
cosmetic issue.
[PATCH] Clear ThreadLocal instances in close()
----------------------------------------------
Key: LUCENE-1186
URL: https://issues.apache.org/jira/browse/
LUCENE-1186
Project: Lucene - Java
Issue Type: Improvement
Affects Versions: 2.3, 2.3.1, 2.4
Environment: any
Reporter: Christian Kohlschütter
Priority: Minor
Attachments: LUCENE-1186-SegmentReader.patch
As already found out in LUCENE-436, there seems to be a garbage
collection problem with ThreadLocals at certain constellations,
resulting in an OutOfMemoryError.
The resolution there was to remove the reference to the
ThreadLocal value when calling the close() method of the affected
classes (see FieldsReader and TermInfosReader).
For Java < 5.0, this can effectively be done by calling
threadLocal.set(null); for Java >= 5.0, we would call
threadLocal.remove()
Analogously, this should be done in *any* class which creates
ThreadLocal values
Right now, two classes of the core API make use of ThreadLocals,
but do not properly remove their references to the ThreadLocal value
1. org.apache.lucene.index.SegmentReader
2. org.apache.lucene.analysis.Analyzer
For SegmentReader, I have attached a simple patch.
For Analyzer, there currently is no patch because Analyzer does
not provide a close() method (future to-do?)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]