所以我是内存昂贵的应用程序的新手,我真的不知道交换是如何工作的......
我只有 10GiB 的内存(这是一个虚拟机),以及 500GB/1TB 的可用硬盘空间
java 应用程序大约需要 150/200GiB 内存才能运行,但我可以将其减少到 64GiB。我认为并不是所有东西都同时加载,但是Java仍然需要分配堆空间
我应该分配多少交换空间?它将如何运作?操作系统将如何响应? (我知道它在内存已满/减少内存使用时使用,但遗憾的是我没有找到更多有用的信息)
答案1
(可用)物理 RAM 和交换空间的总和必须大于内核和所有正在运行的进程分配的 RAM 总量。当然,使用过多的交换空间可能会使系统变得非常慢。
因此,如果除了您的应用程序之外没有任何东西需要大量内存,那么您应该至少有 65GiB 即 55GiB 交换空间。
很难说 Linux 还是你的应用程序在内存管理方面哪个更有效。因此,我建议分配 210GiB 进行交换(我刚刚意识到这听起来有多疯狂......),并将应用程序性能与不同的应用程序内存设置进行比较。
您可以更改正在运行的系统中的交换空间量,例如,如果您有 LVM 和多个可用于交换的 LV。看man swapon
。