Параметр тайм-аута сеанса уничтожает объект или объект остается в памяти?

1

в моем java-проекте web.xml, параметр тайм-аута сеанса установлен на 5 минут. Через 5 минут весь объект сеанса убивает или остается памятью?

  • 0
    Это немного сложнее, чем GC. Это связано со всем процессом управления сессиями контейнеров сервлетов. Я снова открываюсь, потому что этот дубликат не покрывал все.
  • 0
    Как уже сказал @SotiriosDelimanolis, это немного сложнее, и, поскольку я не являюсь экспертом по контейнерам сервлетов (и разные контейнеры могут по-разному обрабатывать их), я могу только догадываться: когда через 5 минут бездействия контейнер делает сессию недействительной, он может также будет удален из хранилища сеансов контейнера. Если нет других ссылок на сеанс, которые мешают GC, он может быть собран прямо тогда, если сборщик мусора запущен в этот момент.
Показать ещё 1 комментарий
Теги:
session-cookies
session-timeout

1 ответ

0

У меня был один и тот же вопрос, поэтому я проверил исходный код tomcat. Я не проверял все, но я буду так же, как и я. Существует класс StandardSession, который имеет много методов, связанных с этими методами.

  • одним из них является expire() который обновляет переменную isValid до false.
  • существует еще один метод recycle() который очищает все атрибуты и возвращает многие свойства, такие как lastAccessedTime, maxInactiveInterval и т.д.

Теперь я предполагаю, что эти методы вызывают, когда сеанс отключен. Так что это не убивает их, они перерабатывают их.

Я зашел в диспетчер сеансов ManagerBase, чтобы узнать, что он делает. Всякий раз, когда приходит новый запрос, вызывается метод ниже (перед этим есть несколько других вызовов методов).

/**
 * Get a session from the recycled ones or create a new empty one.
 * The PersistentManager manager does not need to create session data
 * because it reads it from the Store.
 */
@Override
public Session createEmptySession() {
    return (getNewSession());
}
  • 0
    Я использую структуру Java Struts и программные данные, перечисленные, и этот набор массивов session.setAttribute ("dataList" dataList), например. Сборка мусора может быть полной, и сервер иногда останавливается. Я сказал, что, возможно, JVM или сервер приложений Weblogic по-прежнему остаются в памяти. У нас 300 пользователей, и они перечислены в этом списке. И список всегда установлен на сессию. Сессии удаляются с помощью session.removeAttribute ("dataList"). Но по моему мнению, сеанс нельзя убить или удалить?
  • 0
    removeAttribute не имеет никакого отношения к сеансу убийства. вы просто удаляете это свойство из сеанса. Что вы подразумеваете под сервером, когда-нибудь останавливаться?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню