JavaEE, память

Статус
В этой теме нельзя размещать новые ответы.
D

difour

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

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

нашел статью Для просмотра ссылки Войди или Зарегистрируйся, в ней говорится что объект живет все время, это до рестарта сервера, обидно (
 
пиши свой лог в файл!

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

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

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

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

-----------

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

list = null;

или

list = new ArrayList<String>();

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


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


------

ArrayList и HashMap основные места где собирають утечки памяти.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху