Class ElsaStack

  • Direct Known Subclasses:
    ElsaStack.IdentityArray, ElsaStack.MapStack, ElsaStack.NoReferenceStack

    public abstract class ElsaStack
    extends java.lang.Object

    ElsaStack 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.
    • Constructor Detail

      • ElsaStack

        public ElsaStack()
    • 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)