我遇到了 MappedByteBuffer 的问题,特别是它在内部的工作方式。我理解它的方式缓存完全由操作系统完成。因此,如果我从文件中读取(使用 MappedByteBuffer),操作系统将从硬盘驱动器读取整个页面并将页面保存在 RAM 中,以便在再次需要时更快地访问。这也允许为访问同一文件的多个应用程序/进程提供共享缓存。这个对吗?
如果是这样,如何使此缓存无效?只是重新初始化映射对象不应该工作。我编写了一个从硬盘驱动器读取大量数据的应用程序。我需要做一些基准测试,所以我需要在需要时清除这个缓存。我尝试使用“echo 3 > /proc/sys/vm/drop_caches”,但这并没有什么不同,所以我认为它不起作用。