linux - 我可以告诉 Linux 不要换出特定进程的内存吗?

标签 linux swap

有没有办法告诉 Linux 它不应该将特定进程的内存换出到磁盘?

它是一个 Java 应用程序,所以理想情况下我希望有一种方法可以从命令行执行此操作。

我知道你可以将 global swappiness 设置为 0,但这明智吗?

最佳答案

您可以通过 mlockall(2) 进行此操作Linux下的系统调用;这将适用于整个过程,但请阅读您需要传递的参数。

你真的需要把整个事情都拉到核心吗?如果它是一个 java 应用程序,您可能会将整个 JVM 锁定在内核中。我不知道执行此操作的命令行方法,但您可以编写一个简单的程序来调用 fork,调用 mlockall,然后调用 exec.

您还可以查看 madvise(2) 中的访问模式通知之一。满足您的需求。如果它适用于您,建议 VM 子系统使用更好的分页策略可能会更好。

请注意,很久以前现在在 SunOS 下,有一个类似于 madvise 的机制,称为 vadvise(2) .

关于linux - 我可以告诉 Linux 不要换出特定进程的内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578137/

相关文章:

javascript - 保存位置的可排序 Div

linux - 如何删除目录中X个文件

c++ - 使 Thread 本地队列带有计数器

linux - 启动一个新的屏幕 session 以运行启动另一个屏幕 session 的脚本

c - Ubuntu : sem_timedwait not waking (C)

c - 在 C 语言中交换文件中的行

linux - 使用 sudo 运行时出现意外标记 `do' 附近的语法错误

java - 改变数组元素的顺序

c++ - 如何解决数独问题,以便通过交换任何两个相邻的子网格我仍然得到有效答案?

Android 变量在 AsyncTask 中交换值