Welche Bedeutung haben die Hash-Schlüssel beim Aufruf von ObjectSpace.count_objects?

8

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.

    
marshally 24.09.2010, 18:35
quelle

3 Antworten

4

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:

%Vor%

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.)

    
Jörg W Mittag 24.09.2010 18:45
quelle
1

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.

    
Bill Lipa 15.12.2017 16:57
quelle
0

Die Typen sind in der Datei doc/extension.doc im Ruby-Quellcode beschrieben:

%Vor%

Darüber hinaus gibt es mehrere andere Typen, die intern verwendet werden:

%Vor%     
Ilya Vassilevsky 04.03.2018 17:54
quelle

Tags und Links