|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
Всем привет! CentOs7 + Tomcat8 + MariaDB10 Web приложение крутится на Tomcat и пишет в MariaDB через HikariCP. При остановке приложения я закрываю HikariCP через метод close(). Сами соединения не закрываю. В результате в логе Tomcat получаю предупреждения: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 14:31 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
Соединения открываются через try-with-resources ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 14:48 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
Ну собственно томкат сам пытается подчистить лики, о чем и пишел в лог. Чтобы проверить получилось ли у него или нет - надо задеплоить томкат, открыть jVisualVM прочекать память, предварительно запустив сборку мусора, потом наживую передеплоить томкат, опять собрать мусор и сравнить объем памяти. Если он +- такой же - значит волноваться не стоит, если в 2 раза больше - значит лик есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 15:27 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
Как в jVisualVM предварительно запустить сборку мусора? забыл ник, ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 15:38 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
я имею ввиду после того как приложение задеплоилось сделай сборку мусора, чтобы понять сколько оно памяти ест, и тоже самое после редеплоя. А запустить ее надо нажав на кнопку Perform GC если не изменяет память ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 16:22 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
Molasar, все написано в сообщении: Molasarregistered the JDBC driver ... To prevent a memory leak, the JDBC Driver has been forcibly unregistered - смысл: либо используйте JDBC-пул настроенный в Tomcat (тогда он сам будет анрегистерить драйвер), либо делайте это в своем коде сами (еще ни разу не видел чтобы кто то это делал). Иначе будет течь память (при каждом старте приложения драйвер регистрируется заново, а при стопе не арегистрится). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 16:28 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
MolasarWeb приложение крутится на Tomcat и пишет в MariaDB через HikariCP. При остановке приложения я закрываю HikariCP через метод close(). Сами соединения не закрываю. В результате в логе Tomcat получаю предупреждения:Перенесите jdbc-драйвера и, вероятно, HikariCP из контекста приложения в ${CATALINA.BASE}/lib ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 18:00 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
Скопировал. В в каталоге приложения WEB-INF\lib их нужно удалить? Как собрать war без зависимостей? Basil A. SidorovMolasarWeb приложение крутится на Tomcat и пишет в MariaDB через HikariCP. При остановке приложения я закрываю HikariCP через метод close(). Сами соединения не закрываю. В результате в логе Tomcat получаю предупреждения:Перенесите jdbc-драйвера и, вероятно, HikariCP из контекста приложения в ${CATALINA.BASE}/lib ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 12:47 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
Переносом драйвера JDBC из контекста приложения в ${CATALINA.BASE}/lib я избавился от предупреждения failed to unregister it when the web application was stopped. При этом в POM я добавил <scope>runtime</scope> для mariadb-java-client Но при этом остаются предупреждения: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
После остановки приложения потоки MariaDb-bulk остаются припаркованными в памяти. Как их закрыть? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 14:22 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
Жизненный цикл сервлета предусматривает методы init() и destroy(). В первом инициализируете подключение к базе при развертывании (старте) контекста приложения, во втором - "прибираетесь" при "свёртывании". Учитываете, что в обоих методах не должно быть "долгоиграющих" действий и что один и тот же сервлет может работать в нескольких контекстах: static и прочая "глобализация" только там, где вы точно понимаете, что именно вы делаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 14:39 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
Ниже простейший пример, который вызывает это предупреждение: Код: java 1. 2.
Причем припаркованные, но не завершенные, потоки MariaDB-bulk возникают при использовании statement.executeBatch(). Всё закрыто, всё прибрано. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Basil A. SidorovЖизненный цикл сервлета предусматривает методы init() и destroy(). В первом инициализируете подключение к базе при развертывании (старте) контекста приложения, во втором - "прибираетесь" при "свёртывании". Учитываете, что в обоих методах не должно быть "долгоиграющих" действий и что один и тот же сервлет может работать в нескольких контекстах: static и прочая "глобализация" только там, где вы точно понимаете, что именно вы делаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 17:49 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
MolasarВсё закрыто, всё прибрано. Код: java 1. 2. 3. 4. 5. 6.
Не похоже на try-с-ресурсом. дока Java SE API Код: plaintext 1. 2.
Код: java 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 18:35 |
|
Tomcat: предупреждение об утечке памяти
|
|||
---|---|---|---|
#18+
Вот работающий вариант с одним try-с-ресурсом: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
И в моём и в вашем вариантах всё равно появляется предупреждение. Так что дело в другом...(((( Basil A. SidorovMolasarВсё закрыто, всё прибрано. Код: java 1. 2. 3. 4. 5. 6.
Не похоже на try-с-ресурсом. дока Java SE API Код: plaintext 1. 2.
Код: java 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 09:54 |
|
|
start [/forum/topic.php?fid=59&msg=39843422&tid=2121176]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 264ms |
0 / 0 |