This is regime where GC languages simply can't coexist with aggressive swapping. You have to either disable swapping (somehow), or use something like a shared library doing something like the Linux mlockall for the runtime heap.
I believe there is something similar to mlockall you can do on windows to somewhat prevent swapping out the heap, but unfortunately I can't recall it right now.
Our enterprise databases store the data on high-performance SAN devices, and these are not slow. We moved from local spinning-rust drives to SAN SSDs, and our performance improved.
Better to configure the databse to allocate less than the available system memory and refuse writes when it's out of free memory.
Of course, due to Windows no-overcommit policy, it's better to have a large page file almost always. That ensures your RAM is going to be used efficiently and not as a simple backing store that's never actually referenced.