You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2014/06/18 23:54:59 UTC
svn commit: r1603647 -
/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java
Author: jpountz
Date: Wed Jun 18 21:54:59 2014
New Revision: 1603647
URL: http://svn.apache.org/r1603647
Log:
LUCENE-5773: Fix BlockTermsReader ram usage estimation.
Modified:
lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java
Modified: lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java?rev=1603647&r1=1603646&r2=1603647&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java (original)
+++ lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java Wed Jun 18 21:54:59 2014
@@ -41,10 +41,12 @@ import org.apache.lucene.store.ByteArray
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexInput;
+import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.ArrayUtil;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.DoubleBarrelLRUCache;
+import org.apache.lucene.util.RamUsageEstimator;
/** Handles a terms dict, but decouples all details of
* doc/freqs/positions reading to an instance of {@link
@@ -59,6 +61,7 @@ import org.apache.lucene.util.DoubleBarr
* @lucene.experimental */
public class BlockTermsReader extends FieldsProducer {
+ private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(BlockTermsReader.class);
// Open input to the main terms dict file (_X.tis)
private final IndexInput in;
@@ -226,7 +229,8 @@ public class BlockTermsReader extends Fi
return fields.size();
}
- private class FieldReader extends Terms {
+ private static final long FIELD_READER_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(FieldReader.class);
+ private class FieldReader extends Terms implements Accountable {
final long numTerms;
final FieldInfo fieldInfo;
final long termsStartPointer;
@@ -247,6 +251,11 @@ public class BlockTermsReader extends Fi
}
@Override
+ public long ramBytesUsed() {
+ return FIELD_READER_RAM_BYTES_USED;
+ }
+
+ @Override
public TermsEnum iterator(TermsEnum reuse) throws IOException {
return new SegmentTermsEnum();
}
@@ -862,9 +871,14 @@ public class BlockTermsReader extends Fi
@Override
public long ramBytesUsed() {
- long sizeInBytes = (postingsReader!=null) ? postingsReader.ramBytesUsed() : 0;
- sizeInBytes += (indexReader!=null) ? indexReader.ramBytesUsed() : 0;
- return sizeInBytes;
+ long ramBytesUsed = BASE_RAM_BYTES_USED;
+ ramBytesUsed += (postingsReader!=null) ? postingsReader.ramBytesUsed() : 0;
+ ramBytesUsed += (indexReader!=null) ? indexReader.ramBytesUsed() : 0;
+ ramBytesUsed += fields.size() * 2L * RamUsageEstimator.NUM_BYTES_OBJECT_REF;
+ for (FieldReader reader : fields.values()) {
+ ramBytesUsed += reader.ramBytesUsed();
+ }
+ return ramBytesUsed;
}
@Override