目前我有一個對象包含大量項目(在運行時不會更改),佔用大量內存,此對象將用於多個會話(每個用戶)和在每一箇中應該是相同的。帶事件的共享對象
因此,我不是在每個會話中複製大對象或創建新實例,而是決定將其用作共享資源。這樣每個會話將從對象的列表中讀取以獲取項目並完成它需要做的事情。我想節省內存,因爲這是一個Web應用程序。
但是,列表中的這些項目也有事件,每個會話都需要訂閱這些事件。
所以會發生什麼事情是當一個項目事件被觸發時,它在所有會話中觸發它。所以我不得不添加一些邏輯來檢查哪個會話觸發了這個事件,並且只在該會話中使用它。
有沒有更好的方法來做到這一點?更有效的方法?我擔心,如果我得到大量的用戶會話,當這些共享項目被觸發事件時,這會使處理過程陷入停滯。
你的想法是什麼?另外值得注意的是,在處理這些「項目」時,無法知道每個項目需要多長時間,因此我傾向於使用事件。
也許在項目列表(引發事件的那個)中創建對象的本地副本。這樣,您仍然只需要大容器對象的一個副本,但通過允許每個會話都是自己的較小對象副本,事件應該是會話本地的。 – Kevin
什麼是會話?它是一個網絡應用程序?您的應用程序是否針對所有用戶在單個流程中運行? 如何/你在哪裏存儲會話?在內存中(在web應用程序中的進程)還是在數據庫中?在內存會話存儲排序阻止您使用網絡農場 – Maarten
同上,這是什麼類型的應用程序? – Paparazzi