Linux 操作系统运行程序的虚拟内存和swap有什么必然的联系吗?虚拟内存过大会导致OOM吗
有区别,没有必然联系
程序虚拟内存:简单说就是程序进程可以访问的空间,比如32位机器的4G,表示程序可以访问的空间范围,但物理内存不可能给每个进程直接使用这么大,因此是虚拟的,实际访问时os会做对应的转换和处理
swap: 是物理内存不够当前机器上的活动的进程使用时,使用交换区来作为物理内存使用。比如2G的物理内存,运行程序时需要使用内存2.5G,此时就会使用交换区,当然交换区有对应的机制来维护加载和生命期的问题
如下几个参考
https://stackoverflow.com/questions/4970421/whats-the-difference-between-virtual-memory-and-swap-space
http://www.differencebetween.info/difference-between-virtual-memory-and-swap-memory