ConcurrentHashMap 記憶體持續增長不釋放,JProfiler 追蹤發現源頭為 JSP Request Session。ConcurrentHashMap 儲存屬性。invalidate() 或逾時,物件長駐堆疊。<%@ page session="false" %>
靜態頁、純展示頁、API 端點均應關閉,避免無謂建立 Session。
web.xml 全域設定(單位:分鐘):<session-config>
<session-timeout>10</session-timeout> <!-- 視業務調整 5~15 分鐘 -->
</session-config>
session.setMaxInactiveInterval(300)(秒)。// 登出、流程結束時
session.invalidate();
「Session 是雙面刃,方便狀態管理卻消耗記憶體。高併發系統必須:
1. 能關就關(session="false")
2. 逾時設短(session-timeout)
3. 用完即銷(invalidate())
4. 壓力大時外部化」