lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From robert engels <reng...@ix.netcom.com>
Subject Re: [jira] Commented: (LUCENE-1186) [PATCH] Clear ThreadLocal instances in close()
Date Mon, 25 Feb 2008 18:55:47 GMT
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: java-dev-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-dev-help@lucene.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


Mime
View raw message