Mike HR と Stefan が私の質問にObjectSpace.each_object(String)
コメントした後、考えられるほぼすべての文字列が含まれていることに気付きました。
strings = ObjectSpace.each_object(String)
strings.include?("some random string") # => true
また
strings = ObjectSpace.each_object(String).to_a
strings.include?("some random string") # => true
strings
その時点で存在していた文字列のみを含める必要があると考えました。ほぼすべての文字列が含まれるのはなぜですか?
それでも、 の長さを数えるとstrings
、有限数が返されます。
ObjectSpace.each_object(String).to_a.length # => 15780
これは、Ruby 2.1.2p95 (2014-05-08 リビジョン 45877) [x86_64-linux] インタープリターと irb で確認されています。
これは、Ruby 2.1 で導入された凍結された文字列リテラルの最適化と関係がありますか?