我正在看Java中的一些內存映射文件。假設我有一個堆大小設置爲2GB,我的內存映射一個50GB的文件 - 遠遠超過機器上的物理內存。操作系統會將該50GB文件的一部分緩存在os文件緩存中,java進程將擁有2GB的堆空間。我很好奇的是操作系統如何決定要緩存多少50GB文件?例如,如果我有另一個java進程,也有一個2gb堆大小,將2gb換出來允許os緩存部分內存映射文件嗎?第一個進程的堆空間部分是否會被換出以允許操作系統緩存?Java內存映射文件和交換
有什麼辦法可以告訴操作系統不要交換操作系統緩存的堆空間嗎?如果操作系統沒有交換出主進程,它如何確定文件緩存應該有多大?