|
|
|
Утечка памяти. Где?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Где-то тут утекает память... Помогите разобраться где. Заранее огромное спасибо! Код: 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. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. Через некоторое время при вызове этой функции программа валится в: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2012, 08:34:08 |
|
||
|
Утечка памяти. Где?
|
|||
|---|---|---|---|
|
#18+
Ну, например, если command.close() выкинет исключение, то ResultSet зыкрыт не будет. А вообще гадать по коду это неблагодарное занятие. Запускаем jvisualvm делаем дамп кучи и анализируем лишние объекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2012, 10:31:21 |
|
||
|
Утечка памяти. Где?
|
|||
|---|---|---|---|
|
#18+
Ну, и код - каша. Не до конца отформатирован. Непонятные имена переменных. Переменная result переиспользуется для двух resultset-ов. Понять такой код очень сложно. Какой был смысл экономить на переменных? Заведите отдельные переменные. Метод сам по себе большой и делает много всего и сразу. Почему PreparedStatement это command? Ничего ведь общего. Перенос строки вы очень любите, а вот пробелы недолюбливаете. Используйте автоматическое форматирование в IDE хотябы. То что вы не используете preparedstatement, как минимум снижает производительность да. Объяснили ведь в другой теме что String.format к подстановке переменных в SQL лучше не применять. Ну и ещё несколько замечаний по коду, но уже лень строчить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2012, 10:39:34 |
|
||
|
Утечка памяти. Где?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТо что вы не используете preparedstatement, как минимум снижает производительность да. В каком смысле не использует? там же есть объявление. PreparedStatement command=null; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 14:27:44 |
|
||
|
Утечка памяти. Где?
|
|||
|---|---|---|---|
|
#18+
КореецВ каком смысле не использует? там же есть объявление. PreparedStatement command=null; Объявить переменную, ещё не значит использовать объект. Там 4 запроса с параметрами. И только первый реализован через PreparedStatement. Остальные 3 через подстановку строки. ... Кстати, только заметил, ведь LAST_INSERT_ID() не нужен. ReturnGeneratedKeys все адекватные драйвера уже поддерживают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 14:37:18 |
|
||
|
Утечка памяти. Где?
|
|||
|---|---|---|---|
|
#18+
не совсем по теме но: зачем два select в начале метода? что left join не модно? зато на спичках экономим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 15:42:29 |
|
||
|
Утечка памяти. Где?
|
|||
|---|---|---|---|
|
#18+
chpashaне совсем по теме но: зачем два select в начале метода? что left join не модно? зато на спичках экономим. Это спорно. Мы не знаем архитектуру БД и возможно ступенчатая проверка несёт свои плюсы. По крайней мере я находил выгоды в раздельных курсорах по 1 и 2 таблице (есть даже забавный пример с min/max где план дорожает). Другое дело что один и тот-же резалт-сет используется в разных контекстах. Это плохо. Сложно отслеживать инициализацию, и вообще дурной стиль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 18:08:55 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37879676&tid=2131350]: |
0ms |
get settings: |
19ms |
get forum list: |
26ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
48ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
88ms |
get tp. blocked users: |
3ms |
| others: | 408ms |
| total: | 630ms |

| 0 / 0 |
