HttpSession 通过引用或值存储属性?

Tio*_*oma 2 java servlets httpsession

我在我的服务器应用程序中使用 HttpSession。并为会话设置属性。接下来我的问题是:会话属性如何设置 - 通过引用或值。

问题在于担心不会出现 java 堆空间异常和 RAM 节省。

例如:如果我将创建无状态array1并将其设置为不同会话的属性。在这种情况下,所有会话都将作为“单例”实例运行array1,也可能不运行

谢谢!

Lau*_*eyn 5

Java 中所有对象(包括数组)都是通过引用传递的。因此,如果将数组的相同实例存储到多个HttpSessions 中,它将在它们之间共享。数组的大小无法修改,但其元素可以修改 - 无论它们是基元还是引用,因此在高度并发的环境(例如 Servlet)中必须小心。

您可能需要注意的另一个方面是 an 的所有属性都HttpSession 应该是可序列化的。