JavaEE, память

Тема в разделе "Другие языки", создана пользователем difour, 8 мар 2008.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. difour

    difour Прохожие

    тут появился маленький вопрос, как можно освободить память?
    у меня есть статический класс, в котором есть
    private static List<String> list = new ArrayList<String>();
    и в него я пишу некий лог, так вот, сделав простую страницу и рефреша ее, у меня остается информация созданная на прошлой странице, и если поставить счетчик в том классе, к примеру private int total (который будет записывать кол-во хитов), то он постоянно увеличивается.

    что делать :), как я понял это выделенная под объект память, и так как он статический, то идет обращение к нему, как к уже созданному.

    нашел статью http://www.javaworld.com/javaworld/jw-03-2006/jw-0313-leak.html, в ней говорится что объект живет все время, это до рестарта сервера, обидно (
     
  2. durman

    durman Постоялец

    Регистр.:
    18 фев 2008
    Сообщения:
    87
    Симпатии:
    8
    пиши свой лог в файл!

    а вообще если я не ошибся и ты работаешь с сервлетами, то сообщаю они всегда создаються один раз (по моему при запуске сервера) и навсегда, и в общем случае создаваемый обект не обязательно должен быть статический.
     
  3. masto

    masto Прохожие

    Не используй static.
    или без этого ни куда?
     
  4. difour

    difour Прохожие

    подправил код и избавился от статика, теперь все отлично
     
  5. n42

    n42

    Регистр.:
    8 фев 2008
    Сообщения:
    206
    Симпатии:
    25
    сервлеты могут создоваться не раз по спеку.

    В простом случае один если один томкат то один сервлет.

    Но вспеке учтён случай когда есть нельколько контейнеров.

    Это как EJB. может быть нелько штук на разных серверах и их могут перемещать между серверами.

    -----------

    Что бы удать объект достаточно

    list = null;

    или

    list = new ArrayList<String>();

    ------------


    Класс это тоже объект и если на него ни кто не ссылает больше то класс будет выгружем вместе со статическими объектами.


    ------

    ArrayList и HashMap основные места где собирають утечки памяти.
     
Статус темы:
Закрыта.