но обычно если у меня свап забивается, то он не освобождается просто так
Потому что нет смысла. Только если там лежит бывшая страница, которая была засинкана, потом снова изменена и грязная данная в свопе становится невалидной.
Так я изначально пытался донести, что данные не хранятся в кэше, сами страницы памяти могут кэшироваться, там могут быть inode - всё это по размеру не эквивалентно самим бинарникам
даже при наличии inode всё равно будет происходить считывание с диска, более быстрое но будет, только при условии что процесс или разделяемая библиотека есть в озу не будет происходить чтение