الوحدة ObjectSpace في روبي

من موسوعة حسوب
مراجعة 11:05، 25 نوفمبر 2018 بواسطة محمد-خطيب (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تحتوي الوحدة 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) الكائن المعطى.

مصادر