Jacob, Correct. The symbol table holds pointers to C strings and new String objects are created with each call to Symbol#to_s. I should note that Symbols are native ruby access to the ruby runtime ID type. It's this reason that C strings are stored in the symbol table, because the C functions for using ID's (rb_intern and rb_id2name) use/return char * and ID.