Ruby's built-in facility (ObjectSpace + allocation tracing) to dump every live object to a file where each line is a JSON object containing address, type, value, allocation file/line, and generation (how many GC cycles it has survived). Produces tens of thousands of lines even for trivial programs, so higher-level tools like heapy are needed to analyze it.