假设基于静态库构建了可执行文件foo.exe,并且该foo.exe的6个实例同时在计算机上运行。 由于除了RAM上的读写部分之外,所有代码都是相同的(只读部分),因此RAM中的这6个实例之间是否会共享以提高性能?
我知道如果上面的foo.exe使用共享库,即使有6个实例运行,这些共享库中只有1个实例将在RAM中。
答案 0 :(得分:6)
这取决于操作系统。
对于Linux和Solaris,所有实例肯定会共享包含代码的内存页(或正确调用的文本)。
他们还可以共享源自可执行文件的数据页(即全局和静态数据)。这些页面与名为copy-on-write或COW的技术共享。只要实例不修改数据页面,它们就会被共享。但是一旦实例修改了数据页面,它就会得到它自己的副本。
我猜测现代版本的Windows会做同样的事情,但我不确定。