キーワード
-
_ id2ref (11) -
allocation
_ sourcefile (11) -
allocation
_ sourceline (11) -
count
_ nodes (11) -
count
_ objects _ size (11) -
count
_ tdata _ objects (11) -
define
_ finalizer (22) -
each
_ object (22) -
garbage
_ collect (11) -
memsize
_ of (11) -
memsize
_ of _ all (11) -
reachable
_ objects _ from (11) -
trace
_ object _ allocations (11) -
trace
_ object _ allocations _ start (11) -
trace
_ object _ allocations _ stop (11) -
undefine
_ finalizer (11)
検索結果
先頭5件
-
ObjectSpace
. # define _ finalizer(obj) {|id| . . . } -> Array (12201.0) -
obj が解放されるときに実行されるファイナライザ proc を 登録します。同じオブジェクトについて複数回呼ばれたときは置き換えで はなく追加登録されます。固定値 0 と proc を配列にして返します。
...ロックを指定した場合は、そのブロックがファイナライザになります。
obj の回収時にブロックは obj の ID (BasicObject#__id__)を引数とし
て実行されます。
しかし、後述の問題があるのでブロックでファイナライザを登録するの......す。proc は obj の回収時に obj の ID を引数として実行されます。
=== 使い方の注意
以下は、define_finalizer の使い方の悪い例です。
//emlist[悪い例][ruby]{
class Foo
def initialize
ObjectSpace.define_finalizer(self) {
puts "foo"
}
end
e......file は、ファイナライザの使い方の
良い例になっています。これは、クラスのコンテキストで Proc を
生成することで上記の問題を回避しています。
//emlist[例][ruby]{
class Bar
def Bar.callback
proc {
puts "bar"
}
end
def ini... -
ObjectSpace
. # define _ finalizer(obj , proc) -> Array (12201.0) -
obj が解放されるときに実行されるファイナライザ proc を 登録します。同じオブジェクトについて複数回呼ばれたときは置き換えで はなく追加登録されます。固定値 0 と proc を配列にして返します。
...ロックを指定した場合は、そのブロックがファイナライザになります。
obj の回収時にブロックは obj の ID (BasicObject#__id__)を引数とし
て実行されます。
しかし、後述の問題があるのでブロックでファイナライザを登録するの......す。proc は obj の回収時に obj の ID を引数として実行されます。
=== 使い方の注意
以下は、define_finalizer の使い方の悪い例です。
//emlist[悪い例][ruby]{
class Foo
def initialize
ObjectSpace.define_finalizer(self) {
puts "foo"
}
end
e......file は、ファイナライザの使い方の
良い例になっています。これは、クラスのコンテキストで Proc を
生成することで上記の問題を回避しています。
//emlist[例][ruby]{
class Bar
def Bar.callback
proc {
puts "bar"
}
end
def ini... -
ObjectSpace
. # undefine _ finalizer(obj) -> object (12201.0) -
obj に対するファイナライザをすべて解除します。 obj を返します。
...す。
//emlist[例][ruby]{
class Sample
def Sample.callback
proc {
puts "finalize"
}
end
def initialize
ObjectSpace.define_finalizer(self, Sample.callback)
end
def undef
ObjectSpace.undefine_finalizer(self)
end
end
Sample.new
GC.start
# => finalize
Sample.new......sample.undef
GC.start
# ※何も出力されない
//}
@see ObjectSpace.#define_finalizer... -
ObjectSpace
. # _ id2ref(id) -> object (6201.0) -
オブジェクト ID(BasicObject#__id__)からオブジェクトを得ます。
... ID(BasicObject#__id__)からオブジェクトを得ます。
@param id 取得したいオブジェクトの ID を整数で指定します。
@raise RangeError 対応するオブジェクトが存在しなければ発生します。
//emlist[例][ruby]{
a = "hoge"
p ObjectSpace._id2ref(a.__id__... -
ObjectSpace
. # allocation _ sourcefile(object) -> String (6101.0) -
objectの元となったソースファイル名を返します。
...合はnilを返します。
//emlist[例:test.rbというファイルで下記のスクリプトを実行した場合][ruby]{
require 'objspace'
ObjectSpace::trace_object_allocations_start
obj = Object.new
puts "file:#{ObjectSpace::allocation_sourcefile(obj)}" # => file:test.rb
ObjectSpace::trac......e_object_allocations_stop
//}
@see ObjectSpace.#trace_object_allocations_start,
ObjectSpace.#trace_object_allocations_stop... -
ObjectSpace
. # allocation _ sourceline(object) -> Integer (6101.0) -
objectの元となったソースファイルの行番号を返します。
...場合はnilを返します。
//emlist[例][ruby]{
require 'objspace'
ObjectSpace::trace_object_allocations_start
obj = Object.new
puts "line:#{ObjectSpace::allocation_sourceline(obj)}" # => line:4
ObjectSpace::trace_object_allocations_stop
//}
@see ObjectSpace.#trace_object_allocations_start,......ObjectSpace.#trace_object_allocations_stop... -
ObjectSpace
. # count _ objects _ size(result _ hash = nil) -> Hash (6101.0) -
型ごとのオブジェクトサイズをバイト単位で格納したハッシュを返します。
...あります。特に T_DATA の合計値は正しくないでしょう。
//emlist[例][ruby]{
ObjectSpace.count_objects_size
# => {:TOTAL=>1461154, :T_CLASS=>158280, :T_MODULE=>20672, :T_STRING=>527249, ...}
//}
@raise TypeError result_hash にハッシュ以外を指定した時に発生しま... -
ObjectSpace
. # memsize _ of(obj) -> Integer (6101.0) -
obj が消費するメモリ使用量をバイト単位で返します。
...しくないでしょう。
2.2 以降では RVALUE のサイズを含んだ結果を返します。
本メソッドは C Ruby 以外では動作しません。
//emlist[例][ruby]{
require 'objspace'
ObjectSpace.memsize_of(10) # => 0
ObjectSpace.memsize_of("12345" * 10) # => 91
//}... -
ObjectSpace
. # memsize _ of _ all(klass = nil) -> Integer (6101.0) -
すべての生存しているオブジェクトが消費しているメモリ使用量をバイト単位 で返します。
...ドは以下のような Ruby のコードで定義できます。
//emlist[例][ruby]{
def memsize_of_all klass = false
total = 0
ObjectSpace.each_object{|e|
total += ObjectSpace.memsize_of(e) if klass == false || e.kind_of?(klass)
}
total
end
//}
戻り値の内容は完全ではな... -
ObjectSpace
. # trace _ object _ allocations { . . . } (6101.0) -
与えられたブロック内でオブジェクトのトレースを行います。
...ェクトのトレースを行います。
//emlist[例][ruby]{
require 'objspace'
class C
include ObjectSpace
def foo
trace_object_allocations do
obj = Object.new
p "#{allocation_sourcefile(obj)}:#{allocation_sourceline(obj)}"
end
end
end
C.new.foo #=> "objtrace.rb:...