Да, они используют меньше памяти. На самом деле, ваш пример Chromium vs. Atom является прекрасной иллюстрацией этого. Оба браузера используют библиотеку WebKit для рендеринга веб-страниц. Если оба браузера используют одну и ту же версию библиотеки WebKit, операционная система загружает только одну ее копию в память для использования ими обоими. Этот процесс называется динамическим связыванием, отсюда и название Dynamic Link Library (DLL) в Windows. Linux просто называет их «библиотеками».
Почти каждая программа, которую вы запускаете, передает большую часть своей функциональности какой-либо внешней библиотеке. Когда программа вызывает одну из функций в библиотеке, операционная система загружает копию библиотеки в память, а затем отображает адрес функции в область памяти программы.
Скажем, программа X вызывает функцию из библиотеки A. ОС загружает библиотеку A в память и дает программе X указатель на нужную ей функцию. Теперь предположим, что программа Y также вызывает ту же функцию в библиотеке A. Поскольку библиотека A уже находится в памяти (потому что программа X использует ее), ОС не загружает ее снова. Он просто передает другой указатель на программу Y.
Важно отметить, что и программа X, и программа Y имеют свои собственные ссылки на одну и ту же функцию в библиотеке A, и ни одна из них не знает, что она используется другой. Они оба думают, что функция отображается в их собственное пространство памяти. ОС динамически переводит адреса виртуализированных указателей в их действительные значения от имени каждой программы. ОС по сути врет каждому из них о том, какой адрес памяти соответствует функции.
Теперь предположим, что программа X изменяет некоторые байты памяти, хранящиеся в этой функции. Поскольку память распределяется между двумя разными программами, ОС создает вторую копию функции, чтобы изменение программы не затронуло программу Y. В этот момент функция загружается в память дважды. Однако ни одна из программ не знает об этом. Программы X и Y просто продолжают делать свое дело, а ОС обрабатывает, какую копию получить. Эта техника называется копирование при записи ,
Таким образом, многие программы могут работать с одной и той же копией данного фрагмента памяти, не имея нескольких копий в ОЗУ. Эта виртуализация памяти является одной из причин, почему так трудно получить надлежащий учет того, сколько ОЗУ фактически используется в системе.
Многие поставщики программного обеспечения имеют свои собственные библиотеки функций, которые они используют, поэтому даже если две программы совсем не похожи (например, Firefox и Thunderbird), тот факт, что они принадлежат одному и тому же поставщику (в данном случае Mozilla), увеличивает вероятность того, что они смогут использовать общую память для своих функций.