Looking at KeyValue I see three variable purely used for caching: timestampCache(long), rowCache(byte[]), and keyLength(int).
>From a quick glance over the code I do not see many spots where we repeatedly >get the TS, rowKey, of keyLength from the same KV. Together these consume 24 bytes (almost 1/2 of KeyValue's constant memory overhead) on every key value created, and we create a *lot* KVs (real and "fake" ones) during scanning and seeking. Were these added to address specific performance concerns? If not, we might consider removing these. -- Lars
