SolverBodies are created at the start of the constraint solving phase, and destroyed at the end. They are stored in a semi-contiguous (chunked) array in roughly the order that they are accessed for cache efficiency. Pointers to SolverBodies are persistent for the duration of the tick, but no longer.