In Ruby 1.9 (YARV) können Sie alle aktuell zugewiesenen Objekte wie folgt zählen:
%Vor%gibt einen Hash wie
zurück %Vor%Was bedeuten diese Hash-Schlüssel? Einige wie T_STRING und T_FILE sind offensichtlich. Ich bin besonders neugierig auf: FREE,: T_ICLASS,: T_DATA und: T_NODE.
Nur eine Vermutung: Ich nehme an, dass :T_ICLASS
counts Klassen einschließen und :T_NODE
möglicherweise für AST-Knoten steht.
Hier ist eine vollständige Liste (leider ohne Kommentare):
%Vor% Die RUBY_T_xyz
enum ist wie folgt definiert:
Ich denke, die meisten davon sind ziemlich offensichtlich. Die einzigen, die ich nicht herausfinden kann, sind T_DATA
(siehe @ Banisters Kommentar), T_ZOMBIE
und T_MASK
.
Übrigens: Beachten Sie, dass dies nicht Teil von Ruby 1.9 ist. Sie sind Teil von YARV. Sie können bei anderen Implementierungen von Ruby 1.9 völlig anders sein oder überhaupt nicht existieren . In der Dokumentation steht eindeutig:
Der Inhalt des zurückgegebenen Hashes ist implementiert. Es kann in Zukunft geändert werden.
Tatsächlich ist es nicht einmal garantiert, dass die Methode selbst existiert:
Diese Methode wird voraussichtlich nicht funktionieren, außer C Ruby.
(Damit meint der Autor vermutlich, dass die Methode nur bei MRI und YARV funktioniert.)
Sie können weitere Informationen über die Kategorie T_DATA
erhalten, indem Sie ObjectSpace.count_tdata_objects
aufrufen (beschrieben in hier ).
Ich glaube, dass dies native Objekte sind, die von der VM gesteuert werden. Manchmal können native Erweiterungen sie auch zuweisen.
Die Typen sind in der Datei doc/extension.doc
im Ruby-Quellcode beschrieben:
Darüber hinaus gibt es mehrere andere Typen, die intern verwendet werden:
%Vor%Tags und Links ruby