关于内存使用的理论问题

关于内存使用的理论问题

我对以下问题感到疑惑:

在某些 *nix 系统中获取了一些abc控制台(无论是否bashzsh其他)。如果我启动某个stuff使用 2MB 内存的进程,然后启动该进程的第二个实例stuff,总共将使用多少内存?

现在确实要使用4MB内存吗?

答案1

如果两个进程都是独立启动的,我们应该假设每个进程都会像没有启动其他“孪生”进程一样运行(只要它们不需要控制相同的资源,例如文件)。我认为大多数没有 GUI 或不需要关心多个实例的简单程序都是这种情况。

但是,系统可以避免这种情况,并在所有流程实例之间共享常量静态数据。这些数据可以由二进制代码、常量、共享库等组成……

此外,当您只关心物理 RAM 的使用情况时,您还必须考虑交换。Linux 会将很少使用的数据推送到硬盘上的交换分区/文件,以释放一些更快的 RAM 作为缓存。

总结一下: 很难说许多相同的进程将使用多少内存,因为内核通过在不同实例之间共享常量数据来优化使用,但几乎可以肯定它将小于单个进程使用量的 n 倍。

相关内容