Method: ObjectSpace.dump_all
- Defined in:
- lib/objspace.rb
.dump_all(output: :file, full: false, since: nil) ⇒ Object
call-seq:
ObjectSpace.dump_all([output: :file]) # => #<File:/tmp/rubyheap20131125-88469-laoj3v.json>
ObjectSpace.dump_all(output: :stdout) # => nil
ObjectSpace.dump_all(output: :string) # => "{...}\n{...}\n..."
ObjectSpace.dump_all(output:
File.open('heap.json','w')) # => #<File:heap.json>
ObjectSpace.dump_all(output: :string,
since: 42) # => "{...}\n{...}\n..."
Dump the contents of the ruby heap as JSON.
_since_ must be a non-negative integer or +nil+.
If _since_ is a positive integer, only objects of that generation and
newer generations are dumped. The current generation can be accessed using
GC::count.
Objects that were allocated without object allocation tracing enabled
are ignored. See ::trace_object_allocations for more information and
examples.
If _since_ is omitted or is +nil+, all objects are dumped.
This method is only expected to work with C Ruby.
This is an experimental method and is subject to change.
In particular, the function signature and output format are
not guaranteed to be compatible in future versions of ruby.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/objspace.rb', line 72 def dump_all(output: :file, full: false, since: nil) out = case output when :file, nil require 'tempfile' Tempfile.create(%w(rubyheap .json)) when :stdout STDOUT when :string +'' when IO output else raise ArgumentError, "wrong output option: #{output.inspect}" end ret = _dump_all(out, full, since) return nil if output == :stdout ret end |