Private ETS indexes and logical versus actual retained accounting.
Logical index bytes are the conservative RetainedSize.bytes/1 charge of
each detached {family, key, value} row, matching issue #1646. The physical
ETS tuple is {key, value} inside the family table. Actual ETS allocation is
sum(:ets.info(table, :memory)) * word_size. Owner metadata, paired trace
facts, and cache state are charged separately and never as a substitute for
the ETS total. Shared binaries that appear in both owner metadata and an ETS
row are charged in both places.
Summary
Types
@type t() :: %{ tables: %{required(atom()) => :ets.tid()}, logical_entries: non_neg_integer(), logical_bytes: non_neg_integer(), owner_metadata: map(), trace_facts: map(), cache: map(), turn_evidence: map() }