2011-07-05 36 views
1

我在我的服務器應用程序中使用HttpSession。併爲會話設置屬性。我在接下來的問題:會話設置的屬性如何設置 - 通過引用或值。HttpSession通過引用或值存儲屬性?

不怕java堆空間異常和RAM保存的恐懼原因的問題。

例如:如果我將創建無狀態array1並將其設置爲不同會話的屬性。在這種情況下,所有會話將與array1一起作爲「單例」實例或者可能不是

謝謝!

回答

4

Java中的所有對象(包括數組)都被引用傳遞。因此,如果您將同一個數組的實例存儲到多個HttpSession s中,它們將在它們之間共享。數組的大小不能被修改,但是它的元素可以是 - 無論它們是基元還是引用,所以在高度併發的環境(例如Servlets)中你必須小心。

您可能想要處理的另一方面是HttpSession應該可序列化的所有屬性。

2

這將是所有會議中的同一個對象,雖然沒有太多理由可以考慮做這樣的事情。我不確定你無意識的數組是什麼意思,你的意思是不可變的嗎?如果不是不可變的,那麼在線程安全性方面需要非常小心地處理這樣一個跨會話共享的對象。