@startuml scale 600 height top to bottom direction skinparam backgroundColor transparent skinparam shadowing false skinparam defaultFontName Monospace skinparam defaultFontSize 10 skinparam stateBorderColor #2c7794 skinparam stateBackgroundColor #edf6fa skinparam ArrowColor #8095a1 title A6 STATE — block state and heap statistics [*] --> Free : 01 one list node Free --> Allocated : 02 first-fit + split\ncurrent free decreases Allocated --> Fragmented : free A and C Fragmented : 03 two free blocks Fragmented : sum free > largest block Fragmented --> Coalesced : free B\naddress-order joins neighbours Coalesced : 04 one free block Coalesced : current free = initial free Coalesced --> OOMChecked : request > arena OOMChecked : NULL + hook once OOMChecked --> [*] state "05 minimum-ever" as MIN Allocated -right-> MIN : records low watermark Fragmented -right-> MIN : does not rise Coalesced -right-> MIN : history remains @enduml