Package org.mapdb.elsa
Class ElsaStack
- java.lang.Object
-
- org.mapdb.elsa.ElsaStack
-
- Direct Known Subclasses:
ElsaStack.IdentityArray,ElsaStack.MapStack,ElsaStack.NoReferenceStack
public abstract class ElsaStack extends java.lang.ObjectElsaStack contains already serialized object. Elsa check for backward references, by comparing newly serialized objects against Stack content. This comparation could be major overhead, so there are three strategies (Stack implementations) for object comparation:
- IdentityHashMap is good for large object arrays, is enabled by default
- HashMap is very slow (full Object.equals()), but performs full deduplication.
- Array with linear search, smaller overhead, but performance degrades fast. Better for tiny objects (5 items)
- No check. Good for primitive objects. Backward (more precisely cyclic) can cause infinitive loop.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classElsaStack.IdentityArrayuses array with linear identity (==) search.static classElsaStack.MapStackUses map (typicallyIdentityHashMapto resolve objects.static classElsaStack.NoReferenceStackNo backward references are resolved, no stack is maintained
-
Field Summary
Fields Modifier and Type Field Description private ElsaSerializerPojo.ClassInfo[]classInfos
-
Constructor Summary
Constructors Constructor Description ElsaStack()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract voidadd(java.lang.Object o)intaddClassInfo(ElsaSerializerPojo.ClassInfo clazzInfo)abstract java.lang.ObjectgetInstance(int i)abstract intgetSize()abstract intidentityIndexOf(java.lang.Object obj)intresolveClassId(java.lang.String clazzName)ElsaSerializerPojo.ClassInforesolveClassInfo(int classId)
-
-
-
Field Detail
-
classInfos
private ElsaSerializerPojo.ClassInfo[] classInfos
-
-
Method Detail
-
add
public abstract void add(java.lang.Object o)
-
identityIndexOf
public abstract int identityIndexOf(java.lang.Object obj)
-
getSize
public abstract int getSize()
-
getInstance
public abstract java.lang.Object getInstance(int i)
-
resolveClassId
public int resolveClassId(java.lang.String clazzName)
-
addClassInfo
public int addClassInfo(ElsaSerializerPojo.ClassInfo clazzInfo)
-
resolveClassInfo
public ElsaSerializerPojo.ClassInfo resolveClassInfo(int classId)
-
-