# struct GC::Stats

- GC::Stats
- Struct
- Value
- Object

##
Defined in:

gc.cr

##
Constructors

- .new(heap_size : UInt64, free_bytes : UInt64, unmapped_bytes : UInt64, bytes_since_gc : UInt64, total_bytes : UInt64)

##
Instance Method Summary

- #bytes_since_gc : UInt64

  Total memory allocated by the GC into its HEAP since the last GC collection, in bytes.

- #clone

  DEPRECATED

- #copy_with(heap_size = @heap_size, free_bytes = @free_bytes, unmapped_bytes = @unmapped_bytes, bytes_since_gc = @bytes_since_gc, total_bytes = @total_bytes)

  DEPRECATED

- #free_bytes : UInt64

  Approximate number of free bytes in the GC HEAP.

- #heap_size : UInt64

  The system memory allocated by the GC for its HEAP, in bytes.

- #total_bytes : UInt64

  Total memory allocated by the GC into its HEAP since the program started, in bytes.

- #unmapped_bytes : UInt64

  The size (in bytes) of virtual system memory that the GC returned to the OS when shrinking its HEAP.

### Instance methods inherited from struct `Struct`

==(other : YAML::Any)
==(other) : Bool ==, hash(hasher) hash, inspect(io : IO) : Nil inspect, pretty_print(pp) : Nil pretty_print, to_s(io : IO) : Nil to_s

### Class methods inherited from struct `Struct`

pre_initialize(address : Pointer) : Nil pre_initialize

### Instance methods inherited from struct `Value`

==(other : Log::Metadata::Value)
==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==, dup dup

### Instance methods inherited from class `Object`

! : Bool !, !=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)
===(other : YAML::Any)
===(other) ===, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash hash, in?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as

### Class methods inherited from class `Object`

from_json(string_or_io : String | IO, root : String)
from_json(string_or_io : String | IO) from_json, from_yaml(string_or_io : String | IO) from_yaml

### Macros inherited from class `Object`

class_getter(*names, &block) class_getter, class_getter!(*names) class_getter!, class_getter?(*names, &block) class_getter?, class_property(*names, &block) class_property, class_property!(*names) class_property!, class_property?(*names, &block) class_property?, class_setter(*names) class_setter, def_clone def_clone, def_equals(*fields) def_equals, def_equals_and_hash(*fields) def_equals_and_hash, def_hash(*fields) def_hash, delegate(*methods, to object) delegate, forward_missing_to(delegate) forward_missing_to, getter(*names, &block) getter, getter!(*names) getter!, getter?(*names, &block) getter?, property(*names, &block) property, property!(*names) property!, property?(*names, &block) property?, setter(*names) setter

##
Constructor Detail

def self.new(heap_size : UInt64, free_bytes : UInt64, unmapped_bytes : UInt64, bytes_since_gc : UInt64, total_bytes : UInt64) #

##
Instance Method Detail

def bytes_since_gc : UInt64 #

Total memory allocated by the GC into its HEAP since the last GC collection, in bytes.

def clone #

DEPRECATED

def copy_with(heap_size = @heap_size, free_bytes = @free_bytes, unmapped_bytes = @unmapped_bytes, bytes_since_gc = @bytes_since_gc, total_bytes = @total_bytes) #

DEPRECATED

def free_bytes : UInt64 #

Approximate number of free bytes in the GC HEAP. The number is relative to the `#heap_size`. The reported value is pessimistic, there might be more free bytes in reality.

def heap_size : UInt64 #

The system memory allocated by the GC for its HEAP, in bytes. The memory may or may not have been allocated by the OS (for example some pages haven't been accessed). The number can grow and shrink as needed by the process.

def total_bytes : UInt64 #

Total memory allocated by the GC into its HEAP since the program started, in bytes. The number keeps growing indefinitely until the integer wraps back to zero.

def unmapped_bytes : UInt64 #

The size (in bytes) of virtual system memory that the GC returned to the OS when shrinking its HEAP. The OS may have reclaimed the memory already, reducing the resident memory usage, or may do so later (for example on memory pressure). The GC will reuse this memory when it needs to grow its HEAP again.