You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by an...@apache.org on 2014/02/21 20:14:57 UTC
svn commit: r1570672 -
/hbase/trunk/hbase-common/src/main/java/org/apache/hadoop/hbase/io/util/LRUDictionary.java
Author: anoopsamjohn
Date: Fri Feb 21 19:14:57 2014
New Revision: 1570672
URL: http://svn.apache.org/r1570672
Log:
HBASE-10585 Avoid early creation of Node objects in LRUDictionary.BidirectionalLRUMap.(Anoop)
Modified:
hbase/trunk/hbase-common/src/main/java/org/apache/hadoop/hbase/io/util/LRUDictionary.java
Modified: hbase/trunk/hbase-common/src/main/java/org/apache/hadoop/hbase/io/util/LRUDictionary.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-common/src/main/java/org/apache/hadoop/hbase/io/util/LRUDictionary.java?rev=1570672&r1=1570671&r2=1570672&view=diff
==============================================================================
--- hbase/trunk/hbase-common/src/main/java/org/apache/hadoop/hbase/io/util/LRUDictionary.java (original)
+++ hbase/trunk/hbase-common/src/main/java/org/apache/hadoop/hbase/io/util/LRUDictionary.java Fri Feb 21 19:14:57 2014
@@ -87,9 +87,6 @@ public class LRUDictionary implements Di
public BidirectionalLRUMap(int initialSize) {
initSize = initialSize;
indexToNode = new Node[initialSize];
- for (int i = 0; i < initialSize; i++) {
- indexToNode[i] = new Node();
- }
}
private short put(byte[] array, int offset, int length) {
@@ -100,6 +97,9 @@ public class LRUDictionary implements Di
if (currSize < initSize) {
// There is space to add without evicting.
+ if (indexToNode[currSize] == null) {
+ indexToNode[currSize] = new Node();
+ }
indexToNode[currSize].setContents(stored, 0, stored.length);
setHead(indexToNode[currSize]);
short ret = (short) currSize++;
@@ -172,19 +172,15 @@ public class LRUDictionary implements Di
}
private void clear() {
+ for (int i = 0; i < currSize; i++) {
+ indexToNode[i].next = null;
+ indexToNode[i].prev = null;
+ indexToNode[i].container = null;
+ }
currSize = 0;
nodeToIndex.clear();
tail = null;
head = null;
-
- for (Node n : indexToNode) {
- n.container = null;
- }
-
- for (int i = 0; i < initSize; i++) {
- indexToNode[i].next = null;
- indexToNode[i].prev = null;
- }
}
private static class Node {