But two equal strings can be two separate objects ("a" == "a" could be
false), two equal symbols will be (including your example, all
variables are still pointing to your new/hacked symbol ) the same
object, its not how the data is stored, saving memory but how it can
be a single instance for the lifetime of the process.

If space is the only gain, then gcing symbols would remove some other
nice properties such as single instance, Id rather pay a small bit of
space for nice properties.

When/If the symbols were in a separate area in memory to the gc's
heap, then the gc would never waste time looking at the symbols, would
that make a measurable/worthwhile improvement to the gc speed?