الوحدة ObjectSpace
في روبي
< Ruby
تحتوي الوحدة ObjectSpace
على مجموعةٍ من البرامج الفرعيَّة (routines) التي تتفاعل مع وسائل جمع المهملات وتسمح لك باجتياز جميع الكائنات النشطة مع مُكرَّر (iterator).
تقدِّم الوحدة ObjectSpace
الدَّعم أيضًا لمُنهِيَات كائنٍ (object finalizers) وكتل procs
التي تُستدعى عندما يكون كائنٌ محدَّدٌ على وشك أن يُدمَّر عبر مجمِّع المهملات.
require 'objspace'
a = "A"
b = "B"
ObjectSpace.define_finalizer(a, proc {|id| puts "Finalizer one on #{id}" })
ObjectSpace.define_finalizer(b, proc {|id| puts "Finalizer two on #{id}" })
ينتج عن تطبيق المثال السابق:
Finalizer two on 537763470
Finalizer one on 537763480
توابع الصنف العامة (Public Class Methods)
id2ref_
يُحوِّل معرِّف الكائن (id) إلى مرجعٍ للكائن.
count_objects
يُحصِي جميع الكائنات التي من نوعٍ واحد.
define_finalizer
يضيف كتلة aProc
كمُنهِي (finalizer) ليُستدعى بعد تدمير الكائن.
each_object
يستدعي كتلةً محدَّدةً مرةً لكل كائنٍ نشطٍ (living object) أو غير مباشرٍ (nonimmediate object) في هذه العملية الحالية في روبي.
garbage_collect
يبدأ عملية جمع المهملات (garbage collection).
undefine_finalizer
يحذف جميع مُنهِيَات (finalizers) الكائن المعطى.