使用 2 个 Web 服务器,单例类是否有 2 个实例?

2022-09-04 00:49:47

使用 2 个 Web 服务器,单例类是否有 2 个实例?


答案 1

这两个Web服务器都将具有其应用程序进程的单独实例,无论是.net还是java。因此,是的,两个服务器都将具有您的单例类的单独实例。

无论这两个Web服务器是两个不同的物理机,即使它们位于同一台服务器上,它们肯定会完全在不同的进程上运行。每个进程将独立于任何其他进程将其对象加载到内存中。

specifically in case of asp.net- 即使在单个Web服务器中,每个站点也会导致Singleton类的单独实例。由于 asp.net 工作进程中的每个站点都加载到单独的应用程序域中,因此没有两个域可以干扰彼此的对象。因此,在 asp.net 即使是具有单个 asp.net 工作进程的单个Web服务器也可以/将具有多个单例类实例,每个实例与另一个实例分开。


答案 2

是的,每个 JVM 甚至类装入器都有一个单例。

请参阅此“何时是单例不是单例?”一文(适用于 Java)。