Friday, April 09, 2010

Утечки памяти в Tomcat

Интересный практический материал по борьбе с утечками памяти в Tomcat. На этот раз - память, которую не освобождает загрузчик классов. Кстати, практический вывод - аккуратней с использованием синглетонов в собственных приложениях. Лучше, чтобы все загружалось базовым classloader.

Код, иллюстрирующий борьбу с загрузчиками также очень интересен:

try {
// Doesn't matter that this JAR doesn't exist - just as long as
// the URL is well-formed
URL url = new URL("jar:file://dummy.jar!/");
URLConnection uConn = url.openConnection();
uConn.setDefaultUseCaches(false);
} catch (Exception e) {

...
}

это - трюк, который предотвращает кэширование .jar файлов.

Как я понимаю, в Tomcat 7 по части работы с памятью будет много изменений. Но вообще, память, которую не освобождает загрузчик класса - это фундаментальная проблема. Каждый JSP файл - это ведь отдельный класс. Так что даже большой нагрузки не нужно будет - достаточно просто много JSP файлов. Каждый запросят по одному разу и все ...

Еще по теме см. здесь

No comments: