Frames ensure Julia's garbage collector is properly managed.
Julia data is freed by the GC when it's not in use. You will need to use frames to do things
like calling Julia functions and creating new values; this ensures the values created with a
specific frame are protected from garbage collection until that frame goes out of scope.
Frames can be nested, the two frame types that currently exist can be freely mixed. The main
difference between the two is that a StaticFrame
is created with a definite capacity,
while a DynamicFrame
will dynamically grow its capacity whenever a value is created or a
function is called. A StaticFrame
is more efficient, a DynamicFrame
is easier to use.
Creating a nested frame takes no space in the current frame.
Frames have a lifetime, 'frame
. This lifetime ensures that a Value
can only be used as
long as the frame that protects it has not been dropped.
Most functionality that frames implement is defined in the Frame
trait.
DynamicFrame | A DynamicFrame is a frame that has a dynamic number of slots on the GC stack. With some
exceptions, creating new Value s and calling them require one slot each. A DynamicFrame
acquires a new slot every time one is needed. See the documentation in the value module
for more information about the costs. You get access to a DynamicFrame by calling
Julia::dynamic_frame or Frame::dynamic_frame , most of
their functionality is defined in the Frame trait.
|
Output | An Output is a slot of a frame that has been reserved for later use. It can be used to
extend the lifetime of the result of a function call to the Output 's lifetime. You can
create an output by calling Frame::output .
|
StaticFrame | A StaticFrame is a frame that has a definite number of slots on the GC stack. With some
exceptions, creating new Value s and calling them require one slot each. Rather than using
new slots on the GC stack when a slot is needed, a StaticFrame uses the slots it acquired on
creation. See the documentation in the value module for more information about the costs.
You get access to a StaticFrame by calling Julia::frame or Frame::frame , most of
their functionality is defined in the Frame trait.
|