From: "headius (Charles Nutter)" Date: 2013-10-03T03:07:15+09:00 Subject: [ruby-core:57614] [ruby-trunk - Feature #8977] String#frozen that takes advantage of the deduping Issue #8977 has been updated by headius (Charles Nutter). After thinking a bit, I guess what your'e asking for is a method that gives you the VM-level object that would be returned for a literal frozen version of the same string. However, it's unclear to me what #frozen or #dedup or #pooled would do if there were no such string. If they'd return the original uncached object, you'd never know if you're actually saving anything. If they would cache the string, the concerns in my previous comment apply. Can you clarify? ---------------------------------------- Feature #8977: String#frozen that takes advantage of the deduping https://bugs.ruby-lang.org/issues/8977#change-42227 Author: sam.saffron (Sam Saffron) Status: Open Priority: Normal Assignee: Category: Target version: current: 2.1.0 During memory profiling I noticed that a large amount of string duplication is generated from non pre-determined strings. Take this report for example https://gist.github.com/SamSaffron/6789005 (generated using the memory_profiler gem that works against head) ">=" x 4953 /Users/sam/.rbenv/versions/2.1.0-dev/lib/ruby/2.1.0/rubygems/requirement.rb:93 x 4535 This string is most likely extracted from a version. Or "/Users/sam/.rbenv/versions/2.1.0-dev/lib/ruby/gems" x 5808 /Users/sam/.rbenv/versions/2.1.0-dev/lib/ruby/gems/2.1.0/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:251 x 3894 A string that can not be pre-determined. ---- It would be nice to have "hello,world".split(",")[0].frozen.object_id == "hello"f.object_id Adding #frozen will give library builders a way of using the de-duping. It also could be implemented using weak refs in 2.0 and stubbed with a .dup.freeze in 1.9.3 . Thoughts ? -- http://bugs.ruby-lang.org/