public class DefaultIoEventSizeEstimator extends java.lang.Object implements IoEventSizeEstimator
IoEventSizeEstimator implementation.
Martin's Java Notes was used for estimation. For unknown types, it inspects declaring fields of the class of the specified event and the parameter of the event. The size of unknown declaring fields are approximated to the specified averageSizePerField (default: 64).
All the estimated sizes of classes are cached for performance improvement.
| Modifier and Type | Field and Description |
|---|---|
private java.util.concurrent.ConcurrentMap<java.lang.Class<?>,java.lang.Integer> |
class2size
A map containing the estimated size of each Java objects we know for
|
| Constructor and Description |
|---|
DefaultIoEventSizeEstimator()
Create a new instance of this class, injecting the known size of
basic java types.
|
| Modifier and Type | Method and Description |
|---|---|
private static int |
align(int size) |
private int |
estimateSize(java.lang.Class<?> clazz,
java.util.Set<java.lang.Class<?>> visitedClasses) |
int |
estimateSize(IoEvent event)
Estimate the IoEvent size in number of bytes
|
int |
estimateSize(java.lang.Object message)
Estimate the size of an Object in number of bytes
|
private final java.util.concurrent.ConcurrentMap<java.lang.Class<?>,java.lang.Integer> class2size
public DefaultIoEventSizeEstimator()
public int estimateSize(IoEvent event)
estimateSize in interface IoEventSizeEstimatorevent - The event we want to estimate the size ofpublic int estimateSize(java.lang.Object message)
message - The object to estimateprivate int estimateSize(java.lang.Class<?> clazz,
java.util.Set<java.lang.Class<?>> visitedClasses)
private static int align(int size)