Java nio FileLock能否提供与mlock系统调用相同的保证?

Java nio FileLock能否提供与mlock系统调用相同的保证?,java,Java,Java nio FileLock能否提供与mlock系统调用相同的保证?寻找一些可以防止内存区域被调出或调入的东西(换句话说,像rdbms缓冲池那样的固定通常会这样做) 我看到mlock系统调用可以锁定虚拟页面,这样它就不会被调出或调入。因此,在普通Java中寻找类似的东西,但不是通过JNI/JNA JavaNIO的FileLock能否提供与mlock系统调用相同的保证 否。FileLock对文件或文件区域实施“互斥”锁定。这是不一样的。(这是flocksyscall的模拟。将man2 flo

Java nio FileLock能否提供与mlock系统调用相同的保证?寻找一些可以防止内存区域被调出或调入的东西(换句话说,像rdbms缓冲池那样的固定通常会这样做)

我看到mlock系统调用可以锁定虚拟页面,这样它就不会被调出或调入。因此,在普通Java中寻找类似的东西,但不是通过JNI/JNA

JavaNIO的
FileLock
能否提供与
mlock
系统调用相同的保证

否。
FileLock
对文件或文件区域实施“互斥”锁定。这是不一样的。(这是
flock
syscall的模拟。将
man2 flock
man2 mlock
进行比较)

我发现
mlock
系统调用可以锁定一个虚拟页面,这样它就不会被调出或调入。我在普通Java中寻找类似的东西,但不是通过JNI/JNA

在不涉及对自定义或第三方本机代码的调用的Java中,无法做到这一点

另一件需要注意的事情是,
mlock
系统调用需要完全的“root”权限或CAP_IPC_LOCK权限


最后,您通常无法控制Java对象在内存中的位置,因此页锁定是一种明智的方法。堆中的任何对象都可能被GC重新定位,而无需任何通知。GC将不知道页面锁定的任何内容。。。因此,最终将不再锁定页面对象,而锁定页面中的其他无关对象。所以这只对堆外内存节点有用。。。您通常需要使用JNI/JNA来创建它们。

是的,我想在堆外进行内存管理。所以锁定的唯一方法是使用jni..嗯,我希望读写系统调用与javaI中公开的一样。。。。许愿没有帮助。向Java团队提交“增强请求”。有什么方法可以做到这一点吗?我认为这都是甲骨文内部的。而且我认为他们会重定向到jniThanks。我将提交一份。只要看看golang,我相信java也可以有同样的东西。但是,如果你想让他们注意到,你需要对你想要的东西给出一个清晰的解释,并给出一个令人信服的理由,说明为什么这对团队来说是值得的>>