Return-Path: Delivered-To: apmail-lucene-java-dev-archive@www.apache.org Received: (qmail 66746 invoked from network); 7 Jul 2008 21:24:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 7 Jul 2008 21:24:08 -0000 Received: (qmail 63056 invoked by uid 500); 7 Jul 2008 21:24:08 -0000 Delivered-To: apmail-lucene-java-dev-archive@lucene.apache.org Received: (qmail 62690 invoked by uid 500); 7 Jul 2008 21:24:07 -0000 Mailing-List: contact java-dev-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@lucene.apache.org Delivered-To: mailing list java-dev@lucene.apache.org Received: (qmail 62680 invoked by uid 99); 7 Jul 2008 21:24:07 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Jul 2008 14:24:07 -0700 X-ASF-Spam-Status: No, hits=1.2 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: 64.13.192.46 is neither permitted nor denied by domain of adrian.tarau@gmail.com) Received: from [64.13.192.46] (HELO cl37.gs01.gridserver.com) (64.13.192.46) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Jul 2008 21:23:14 +0000 Received: from ool-18bbdf9a.static.optonline.net ([24.187.223.154]:59324 helo=[192.168.0.34]) by cl37.gs01.gridserver.com with esmtpa (Exim 4.63) (envelope-from ) id 1KFyBK-00005k-VN for java-dev@lucene.apache.org; Mon, 07 Jul 2008 14:23:35 -0700 Message-ID: <48728954.3030903@gmail.com> Date: Mon, 07 Jul 2008 17:23:32 -0400 From: Adrian Tarau User-Agent: Thunderbird 2.0.0.14 (X11/20080505) MIME-Version: 1.0 To: java-dev@lucene.apache.org Subject: Re: Fwd: ThreadLocal in SegmentReader References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org Usually ThreadLocal.remove() should be called at the end(in a finally block), before the current call leaves your code. Ex : if during searching ThreadLocal is used, every search(..) method should cleanup any ThreadLocal variables, or even deeper in the implementation. When the call leaves Lucene any used ThreadLocal should be cleaned up. Michael McCandless wrote: > > ThreadLocal, which we use in several places in Lucene, causes a leak > in app servers because the classloader never fully deallocates > Lucene's classes because the ThreadLocal is holding strong references. > > Yet, ThreadLocal is very convenient for avoiding synchronization. > > Does anyone have any ideas on how to solve this w/o falling back to > "normal" synchronization? > > Mike > > Begin forwarded message: > >> From: "Yonik Seeley" >> Date: July 7, 2008 3:30:28 PM EDT >> To: java-user@lucene.apache.org >> Subject: Re: ThreadLocal in SegmentReader >> Reply-To: java-user@lucene.apache.org >> >> On Mon, Jul 7, 2008 at 2:43 PM, Michael McCandless >> wrote: >>> So now I'm confused: the SegmentReader itself should no longer be >>> reachable, >>> assuming you are not holding any references to your IndexReader. >>> >>> Which means the ThreadLocal instance should no longer be reachable. >> >> It will still be referenced from the Thread(s) ThreadLocalMap >> The key (the ThreadLocal) will be weakly referenced, but the values >> (now stale) are strongly referenced and won't be actually removed >> until the table is resized (under the Java6 impl at least). >> Nice huh? >> >> -Yonik >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org >> For additional commands, e-mail: java-user-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 > --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org For additional commands, e-mail: java-dev-help@lucene.apache.org