Интересный практический материал по борьбе с утечками памяти в 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:
Post a Comment