Tomcat:跨会话共享静态变量和方法。

Tomcat: shared static variables and methods across sessions.

据我所知,静态变量和方法在不同会话之间共享。采取这种行为可能会导致性能下降,例如,当不同的会话同时读取静态变量或调用静态变量时。

只要没有其他线程写入该变量,多个线程同时读取同一个变量或调用同一个方法通常不会造成性能损失。

并且如果一个线程可以写入另一个线程正在读取的变量,那么您就有一个需要小心处理的并发控制问题。

但是请注意,当一个线程写入的变量在内存中与其他线程读取的变量相邻时,在特定类型的硬件上可能存在上述情况的例外情况。在这种情况下,它们可能处于相同的 "cache line" —— 从 RAM 读取并缓存的内存单元,在这种情况下,读者和作者之间可能存在争用,因为硬件无法分辨他们访问的位置不同。

谷歌搜索术语是"false sharing"。

只是 "using static variables across sessions" 本身并没有性能影响。但是,您需要考虑一个表亲问题。

您正在阅读的字段 from/writing 来自多个用户会话的字段将被同时访问。这意味着您将需要使您的对象 线程安全 (如果您正在写入这些静态字段,这将是必要的)。 会直接影响性能。