Нато она и виртуальная, что может храниться где угодно. Простыми словами, пока она нужна, она храниться в физической памяти. Как только физической памяти хватать перестаёт, часть её сбрасывается на диск. А когда программа обращается к блоку памяти, хранящемуся на диске, какой-то другой блок памяти сбрасывается на диск, а нужный загружается. При чём программа не знает, какая область её памяти на диске, а какая в физической памяти.