 A matrix clock maintains a vector of the vector clocks for each communicating host.Every time a message is exchanged, the sending host sends not only what it knows about the global state of time, but also the state of time that it received from other hosts.This allows establishing a lower bound on what other hosts know, and is useful in applications such as checkpointing and garbage collection.