Java HttpSession按引用或值存储属性?

Java HttpSession按引用或值存储属性?,java,servlets,httpsession,Java,Servlets,Httpsession,我在服务器应用程序中使用HttpSession。和用于会话集属性。接下来的问题是:会话的属性如何设置-通过引用或值 这个问题的原因恐怕是java堆空间异常和RAM保存不好 例如:如果我将创建无状态array1,并将其设置为不同会话的属性。在这种情况下,所有会话都将使用array1作为“singleton”实例,也可能不是 谢谢 在所有会话中都是相同的对象,尽管我想不出有多少理由这样做。我不确定你所说的无状态数组到底是什么意思,你是说可能是不可变的吗?当涉及到线程安全时,如果这样一个对象不是不可变

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

这个问题的原因恐怕是java堆空间异常和RAM保存不好

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


谢谢

在所有会话中都是相同的对象,尽管我想不出有多少理由这样做。我不确定你所说的无状态数组到底是什么意思,你是说可能是不可变的吗?当涉及到线程安全时,如果这样一个对象不是不可变的,那么在会话间共享它时需要非常小心。

在Java中,所有对象(包括数组)都是通过引用传递的。因此,如果您将同一个数组实例存储到多个
HttpSession
s中,它将在它们之间共享。数组的大小不能修改,但是它的元素可以修改——无论它们是原语还是引用,因此在诸如servlet之类的高度并发环境中,必须小心

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