我的应用程序有多个 JVM 在 Linux 中运行,并且交换使用率几乎为零。但是,有时由于数据库的高流量或缓慢,JVM 会消耗交换内存,这是不推荐的。如果发生这种情况,我的计划是通过“关闭/打开”来回收交换,而无需在夜间窗口关闭应用程序。
当我在 OS 上交换时,消耗交换内存的进程会发生什么?他们是否丢失了分配的内存块?或者操作系统是否将交换内存块移回物理内存?我在假设物理内存有足够的可用空间来占用所有交换空间的情况下询问。
我搜索回收交换的原因是交换使用行为;当交换使用率为零时,进程不消耗交换,但是当交换使用率不为零时,即使有足够的物理内存可用,它们也会越来越多地使用交换。
我的问题是处理当服务器遇到大量需求并使用交换内存时的实际实践,并且在大量需求消失后永远不会返回。