Index: CHANGES.txt =================================================================== --- CHANGES.txt (revision 1028931) +++ CHANGES.txt (working copy) @@ -194,6 +194,9 @@ * LUCENE-2360: Small speedup to recycling of reused per-doc RAM in IndexWriter (Robert Muir, Mike McCandless) +* LUCENE-2556: Improve memory usage after cloning TermAttribute. + (Adriano Crestani via Uwe Schindler) + ======================= Release 3.0.1 2010-02-26 ======================= Changes in backwards compatibility policy Index: src/java/org/apache/lucene/analysis/Token.java =================================================================== --- src/java/org/apache/lucene/analysis/Token.java (revision 1028931) +++ src/java/org/apache/lucene/analysis/Token.java (working copy) @@ -524,7 +524,8 @@ Token t = (Token)super.clone(); // Do a deep clone if (termBuffer != null) { - t.termBuffer = (char[]) termBuffer.clone(); + t.termBuffer = new char[this.termLength]; + System.arraycopy(this.termBuffer, 0, t.termBuffer, 0, this.termLength); } if (payload != null) { t.payload = (Payload) payload.clone(); Index: src/java/org/apache/lucene/analysis/tokenattributes/TermAttributeImpl.java =================================================================== --- src/java/org/apache/lucene/analysis/tokenattributes/TermAttributeImpl.java (revision 1028931) +++ src/java/org/apache/lucene/analysis/tokenattributes/TermAttributeImpl.java (working copy) @@ -182,7 +182,8 @@ TermAttributeImpl t = (TermAttributeImpl)super.clone(); // Do a deep clone if (termBuffer != null) { - t.termBuffer = (char[]) termBuffer.clone(); + t.termBuffer = new char[this.termLength]; + System.arraycopy(this.termBuffer, 0, t.termBuffer, 0, this.termLength); } return t; } Property changes on: src\java\org\apache\lucene\analysis\tokenattributes\TermAttributeImpl.java ___________________________________________________________________ Added: svn:mergeinfo Merged /lucene/java/trunk/src/java/org/apache/lucene/analysis/tokenattributes/TermAttributeImpl.java:r881213,881315,881466,881819,882374,882672,882807,882888,882977,883074-883075,883554,884870,886257,886911,887347,887532,887602,887670,888247,889431-889432,889579,889866,890439,890967,890988,891189,891205,891209,891363,891377,893093,894348,897672,899627,900196,903368,908477,908975,909360,909398,910034,910078,912407,915399,916543,919060,919869,920270 Merged /lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/tokenattributes/TermAttributeImpl.java:r941394,946651,948430,957490,957920,984210,988629,990286,999226,999847 Merged /lucene/java/branches/lucene_2_4/src/java/org/apache/lucene/analysis/tokenattributes/TermAttributeImpl.java:r748824 Merged /lucene/dev/trunk/lucene/src/java/org/apache/lucene/analysis/tokenattributes/CharTermAttributeImpl.java:r1024408 Merged /lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/analysis/tokenattributes/TermAttributeImpl.java:r817269-818600,825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850 Merged /lucene/dev/trunk/lucene/src/java/org/apache/lucene/analysis/tokenattributes/TermAttributeImpl.java:r929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,957707,963372,963781,965103,965299,984187,989785,990281,994979,999223,999842 Merged /lucene/java/branches/lucene_2_9_back_compat_tests/src/java/org/apache/lucene/analysis/tokenattributes/TermAttributeImpl.java:r818601-821336