我正在看Java中的一些内存映射文件。假设我有一个堆大小设置为2GB,我的内存映射一个50GB的文件 - 远远超过机器上的物理内存。操作系统会将该50GB文件的一部分缓存在os文件缓存中,java进程将拥有2GB的堆空间。我很好奇的是操作系统如何决定要缓存多少50GB文件?例如,如果我有另一个java进程,也有一个2gb堆大小,将2gb换出来允许os缓存部分内存映射文件吗?第一个进程的堆空间部分是否会被换出以允许操作系统缓存?Java内存映射文件和交换
有什么办法可以告诉操作系统不要交换操作系统缓存的堆空间吗?如果操作系统没有交换出主进程,它如何确定文件缓存应该有多大?