Это не проблема, каждый процесс получает свое собственное пространство виртуальной памяти. И поэтому своя куча. Другой процесс не может получить доступ к вашей куче, Windows создает большую стену между процессами, чтобы гарантировать, что один сбойный процесс не может дестабилизировать другой.
Процессы делают разделяют память, но только для кода, а не для данных. В ОЗУ имеется только одна копия кода инфраструктуры ngen-ed, CLR и джиттера, которые используются всеми процессами, выполняющими управляемый код. В остальном не имеет отношения к вопросу, что память не собирается мусором.