We present Selective Multi-Versioning (SMV), a new STM that reduces the number of aborts, especially those of long read-only transactions. SMV keeps old object versions as long as they might be useful for some transaction to read. It is able to do so while still allowing reading transactions to be invisible by relying on automatic garbage collection to dispose of obsolete versions.SMV is most suitable for read-dominated workloads, for which it achieves much better performance than previous solutions. It has an up to ×11 throughput improvement over a single-version STM and more than a two-fold improvement over an STM keeping a constant number of versions per object. We show that unlike STMs keeping a constant number of versions, SMV operates successfully even in systems with limited memory.