人々は、セッションには多くの重いオブジェクトが含まれていると正しく言っています。システムに十分な数のユーザーがいる場合、サーバーが持つ有限量のメモリにすべてのユーザーを保持しようとすると、最終的には、そのメモリの最大数がなくなるとサーバーがクラッシュします。
プロダクションコードの更新でメモリリークが発生したプロジェクトに一度取り組んだことがあります。これはJ2EEプロジェクトでした(はい、Java EEではなくJ2EEです)。ユーザーがこの電話会社で請求書を確認するためにログインしたとき、ユーザーセッションがメモリから適切に解放されませんでした(原因を思い出せませんが、それは間違いなく問題でした)。このバグは、意図的に実行することについてあなたが求めていることを模倣しています。
サーバーがクラッシュし続けました。そこで、プロファイラーを配置します。アプリサーバーがクラッシュした直後にメモリ使用量がいっぱいになり、すぐに使用されるまで、メモリ使用量が1日を通して増加するのを監視していました。メモリを追加し、VMメモリ設定を増やしました。私はメモリリークだと言いましたが、私は1時間あたり$ 200.00の「サーバーエキスパート」ではなかったため、ガベージコレクターは非常に優れているのではなく、すべて強力であると信じていたため、人々はそれを信じたがりませんでした。
2日後(メインのビジネスシステムではなく、「請求書の表示」システムに影響しました。つまり、サーバーに十分なハードウェアメモリがあるにもかかわらず、同じワークロードまたはメモリ要件がありませんでした)、彼らは2、3人を雇いました。 1日後にアプリに前述のメモリリークが発生したと言ったコンサルタントは、1時間あたり$200.00です。それは修正され、すべてが良かった...コンサルタント費用を差し引いた。
いずれにせよ、これはこれからの脱却です。ユーザーがログアウトしたりブラウザを閉じたりするときにユーザーセッションを終了しないと(セッションタイムアウト)、メモリが最大になりサーバーがクラッシュするという本当のリスクがあります。特に、サイトまたはアプリにかなりの数のユーザーがいる場合。他の人が述べているように、軽量のトークン/クッキーが最適です。