Return-Path: Delivered-To: apmail-lucene-java-dev-archive@www.apache.org Received: (qmail 54920 invoked from network); 23 Jun 2009 17:42:22 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 23 Jun 2009 17:42:22 -0000 Received: (qmail 71502 invoked by uid 500); 23 Jun 2009 17:42:32 -0000 Delivered-To: apmail-lucene-java-dev-archive@lucene.apache.org Received: (qmail 71397 invoked by uid 500); 23 Jun 2009 17:42:31 -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 71371 invoked by uid 99); 23 Jun 2009 17:42:29 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 23 Jun 2009 17:42:29 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 23 Jun 2009 17:42:27 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 8CCEF234C1EA for ; Tue, 23 Jun 2009 10:42:07 -0700 (PDT) Message-ID: <3562308.1245778927575.JavaMail.jira@brutus> Date: Tue, 23 Jun 2009 10:42:07 -0700 (PDT) From: "Robert Newson (JIRA)" To: java-dev@lucene.apache.org Subject: [jira] Commented: (LUCENE-1715) DirectoryIndexReader finalize() holding TermInfosReader longer than necessary In-Reply-To: <956133262.1245769807949.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/LUCENE-1715?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12723203#action_12723203 ] Robert Newson commented on LUCENE-1715: --------------------------------------- I wonder if it's also worth examining the (very few) other places that have finalize()? The mere presence of a finalize() method triggers different handling by the garbage collector. Since all remaining finalize() methods appear to close resources that should have been closed explicitly, the same principle applies for those as for the resolution of LUCENE-1715? src/java/org/apache/lucene/store/SimpleFSDirectory.java: protected void finalize() throws Throwable { src/java/org/apache/lucene/store/SimpleFSDirectory.java- try { src/java/org/apache/lucene/store/SimpleFSDirectory.java- close(); src/java/org/apache/lucene/store/SimpleFSDirectory.java- } finally { src/java/org/apache/lucene/store/SimpleFSDirectory.java: super.finalize(); src/java/org/apache/lucene/store/SimpleFSDirectory.java- } src/java/org/apache/lucene/store/SimpleFSDirectory.java- } src/java/org/apache/lucene/store/SimpleFSDirectory.java- } src/java/org/apache/lucene/store/NativeFSLockFactory.java: public void finalize() throws Throwable { src/java/org/apache/lucene/store/NativeFSLockFactory.java- try { src/java/org/apache/lucene/store/NativeFSLockFactory.java- if (isLocked()) { src/java/org/apache/lucene/store/NativeFSLockFactory.java- release(); src/java/org/apache/lucene/store/NativeFSLockFactory.java- } src/java/org/apache/lucene/store/NativeFSLockFactory.java- } finally { src/java/org/apache/lucene/store/NativeFSLockFactory.java: super.finalize(); src/java/org/apache/lucene/store/NativeFSLockFactory.java- } src/java/org/apache/lucene/store/NativeFSLockFactory.java- } src/java/org/apache/lucene/store/NativeFSLockFactory.java-} src/java/org/apache/lucene/index/IndexWriter.java- /** Release the write lock, if needed. */ src/java/org/apache/lucene/index/IndexWriter.java: protected void finalize() throws Throwable { src/java/org/apache/lucene/index/IndexWriter.java- try { src/java/org/apache/lucene/index/IndexWriter.java- if (writeLock != null) { src/java/org/apache/lucene/index/IndexWriter.java- writeLock.release(); // release write lock src/java/org/apache/lucene/index/IndexWriter.java- writeLock = null; src/java/org/apache/lucene/index/IndexWriter.java- } src/java/org/apache/lucene/index/IndexWriter.java- } finally { src/java/org/apache/lucene/index/IndexWriter.java: super.finalize(); src/java/org/apache/lucene/index/IndexWriter.java- } src/java/org/apache/lucene/index/IndexWriter.java- } src/java/org/apache/lucene/index/DirectoryReader.java- /** Release the write lock, if needed. */ src/java/org/apache/lucene/index/DirectoryReader.java: protected void finalize() throws Throwable { src/java/org/apache/lucene/index/DirectoryReader.java- try { src/java/org/apache/lucene/index/DirectoryReader.java- if (writeLock != null) { src/java/org/apache/lucene/index/DirectoryReader.java- writeLock.release(); // release write lock src/java/org/apache/lucene/index/DirectoryReader.java- writeLock = null; src/java/org/apache/lucene/index/DirectoryReader.java- } src/java/org/apache/lucene/index/DirectoryReader.java- } finally { src/java/org/apache/lucene/index/DirectoryReader.java: super.finalize(); src/java/org/apache/lucene/index/DirectoryReader.java- } src/java/org/apache/lucene/index/DirectoryReader.java- } > DirectoryIndexReader finalize() holding TermInfosReader longer than necessary > ----------------------------------------------------------------------------- > > Key: LUCENE-1715 > URL: https://issues.apache.org/jira/browse/LUCENE-1715 > Project: Lucene - Java > Issue Type: Bug > Components: Index > Affects Versions: 2.4.1 > Environment: Sun JDK 6 update 12 64-bit, Debian Lenny > Reporter: Brian Groose > Assignee: Michael McCandless > Fix For: 2.9 > > > DirectoryIndexReader has a finalize method, which causes the JDK to keep a reference to the object until it can be finalized. SegmentReader and MultiSegmentReader are subclasses that contain references to, potentially, hundreds of megabytes of cached data in a TermInfosReader. > Some options would be removing finalize() from DirectoryIndexReader (it releases a write lock at the moment) or possibly nulling out references in various close() and doClose() methods throughout the class hierarchy so that the finalizable object doesn't references the Term arrays. > Original mailing list message: > http://mail-archives.apache.org/mod_mbox/lucene-java-user/200906.mbox/%3C7A5CB4A7BBCE0C40B81C5145C326C31301A62971@NUMEVP06.na.imtn.com%3E -- 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