mirror of https://github.com/apache/lucene.git
better estimation of memory consumption
git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@480339 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
989b1cb981
commit
06a9b2e22a
|
@ -1112,12 +1112,14 @@ public class MemoryIndex {
|
|||
public static final int FLOAT = 4;
|
||||
public static final int DOUBLE = 8;
|
||||
|
||||
private static final int LOG_PTR = (int) Math.round(log2(PTR));
|
||||
|
||||
/**
|
||||
* Object header of any heap allocated Java object.
|
||||
* ptr to class, info for monitor, gc, hash, etc.
|
||||
*/
|
||||
private static final int OBJECT_HEADER = 2*4; // typically even on 64 bit VMs
|
||||
// private static final int OBJECT_HEADER = 2*PTR;
|
||||
// private static final int OBJECT_HEADER = 2*4; // even on 64 bit VMs?
|
||||
private static final int OBJECT_HEADER = 2*PTR;
|
||||
|
||||
/**
|
||||
* Modern VMs tend to trade space for time, allocating memory on word
|
||||
|
@ -1139,7 +1141,8 @@ public class MemoryIndex {
|
|||
// 9..16 --> 2*PTR
|
||||
private static int sizeOf(int n) {
|
||||
return IS_WORD_ALIGNED_VM ?
|
||||
((n-1)/PTR + 1) * PTR :
|
||||
// ((n-1)/PTR + 1) * PTR : // slow version
|
||||
(((n-1) >> LOG_PTR) + 1) << LOG_PTR : // fast version
|
||||
n;
|
||||
}
|
||||
|
||||
|
@ -1188,6 +1191,11 @@ public class MemoryIndex {
|
|||
return false; // better safe than sorry (applets, security managers, etc.) ...
|
||||
}
|
||||
}
|
||||
|
||||
/** logarithm to the base 2. Example: log2(4) == 2, log2(8) == 3 */
|
||||
private static double log2(double value) {
|
||||
return Math.log(value) / Math.log(2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue