# gc/pools Diagnostic: walk every GC retention pool — per-kind free lists, small-string and small-keyword buckets, CHAMP buckets, slabs, vector-trie nodes, and the keyword table. O(pooled objects), so it is for leak triage, not hot paths. ## Syntax
[gc/pools]
## Examples
[gc/pools]
# → %{ :live_objs 10460
#      :free_total 0
#      :free_by_kind @{}
#      :small_str_total 0 :small_str_by_len @{}
#      :small_kw_total 0 :small_kw_by_len @{}
#      :champ_free 0 :champ_nodes_live 3703
#      :trie_nodes_live 0 :keywords 90
#      :str_slab_bytes 458752 :kw_slab_bytes 65536
#      :map_slab_bytes 131072 :champ_slab_bytes 262144
#      :transient_objs 0 :bytes_allocated 1065508 }
## Returns A map of counters: `:live_objs`, `:free_total`, `:free_by_kind`, `:small_str_total`, `:small_str_by_len`, `:small_kw_total`, `:small_kw_by_len`, `:champ_free`, `:champ_nodes_live`, `:trie_nodes_live`, `:str_slab_bytes`, `:kw_slab_bytes`, `:map_slab_bytes`, `:champ_slab_bytes`, `:transient_objs`, `:keywords`, and `:bytes_allocated`. `:free_by_kind` is indexed per object kind; the `:small_str_by_len` / `:small_kw_by_len` vectors are indexed by string length. Counters are point-in-time snapshots — compare across calls to spot pool growth. `nil` without a VM context. ## See Also `gc/census`, `gc/stats`, `gc/collect`