|
|
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня. Верните меня на путь истинный. Загружаю фотографию с последующим изменением размера и сохранением в БД, но этот процесс отъедает безумно много памяти (фотография объемом 2 Мб забирает 50 Мб и отпускать не хочет). Что я делаю не так? Заранее благодарю. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:17 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Что такое "отпускать не хочет" и при чем тут JavaFX? У вас куча всяких byte[]/ByteArrayStream, которые жрут дополнительную память. Кроме этого надо учитывать что 2Мб JPEG в памяти разворачивается в bitmap 20-30Mb. И у вас их два - оригинальный и измененный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:23 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. Удачи в отладке неожиданных отказов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:24 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Отпускать не хочет: после выполнения операций с фотографией (т.е. уже массивом байт) этот массив продолжает висеть в памяти, хотя на него ссылок никаких нет. Предполагаю, что GC должен подчистить этот массив, но я не совсем понимаю его работу. Когда он освобождает память и освобождает ли вообще? по поводу пустого catch - согласен, так нельзя, но код не мой, а взят из примера)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:28 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
danatrielBlazkowicz, Отпускать не хочет: после выполнения операций с фотографией (т.е. уже массивом байт) этот массив продолжает висеть в памяти, хотя на него ссылок никаких нет. Предполагаю, что GC должен подчистить этот массив, но я не совсем понимаю его работу. Когда он освобождает память и освобождает ли вообще? Чем смотрите память? System.gc() пробовали вызывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:30 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, память смотрю VisualVM. Да пробовал вызывать -результата никакого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:31 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
danatrielBlazkowicz, память смотрю VisualVM. Да пробовал вызывать -результата никакого И исключений никаких небыло 100%? Потому что у вас всё закрывается без finally. В случае любого исключение много чего может зависнуть в памяти. Если интересно, сделайте Heap Dump в VisualVM и приаттачте его к форуму. Я посмотрю. Если слишком секретно всё, то ищите по форуму фразу "GC Roots" - я уже несколько раз описывал как дамп кучи анализировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:36 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, исключений не было. пошагово прошел по каждой строчке. А как heap прикрепить? Он весит более 30 мб:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:41 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
danatrielBlazkowicz, исключений не было. пошагово прошел по каждой строчке. А как heap прикрепить? Он весит более 30 мб:( Ну, выложить куда-нибудь. Сервисов сейчас для этого только ленивый не написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:49 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Там один растр на 17 Мб, который пережил GC только из-за WeakReference. Если вдруг памяти будет не хватать, то он издохнет. Так что ничего криминального. Попробую разобраться зачем там вообще ссылка на него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 16:10 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, при загрузке фотки объем используемой памяти с 10 мб возрастал до 75 и оставалось так. Удалось добиться, что после работы GC, объем используемой памяти падает до 32 мб. По всей видимости меньше уже никак? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 16:12 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
В JAI FAQ есть о потреблении памяти и настройках евойного кеша. http://www.oracle.com/technetwork/java/jaifaq-138288.html В JavaDoc можно найти про потребление памяти и особенность GC http://docs.oracle.com/cd/E17802_01/products/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/PlanarImage.html Так что, вроде, ничего криминального. Никаких ссылок на GC Roots не обнаружено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 16:21 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
danatrielBlazkowicz, при загрузке фотки объем используемой памяти с 10 мб возрастал до 75 и оставалось так. Вы понимаете что растр занимает намного больший объем чем JPEG? danatrielУдалось добиться, что после работы GC, объем используемой памяти падает до 32 мб. По всей видимости меньше уже никак? Попробуйте в JAI настройки кэша. А без JAI вообще никак не ресайзиться? Или зачем он вам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 16:22 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, спасибо огромное! Вы, как всегда, великолепны:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 16:23 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, конечно, я понимаю, что растр занимает намного больше памяти. А как ресайзить без JAI я не нагуглил:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 16:29 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Blazkowicz,еще часок покопаюсь, если ничего путного не получится, то решу проблему запретом на загрузку больших фоток:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 16:30 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
danatrielBlazkowicz, конечно, я понимаю, что растр занимает намного больше памяти. А как ресайзить без JAI я не нагуглил:( Java2D FAQ http://www.oracle.com/technetwork/java/index-137037.html#Q_How_do_I_create_a_resized_copy Но иногда нужно ещё потанцевать с бубном для качества http://www.rsdn.ru/forum/java/2277129.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 16:39 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, спасибо большое!! а с моим проектом бубен стал моим постоянным инструментом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 16:41 |
|
||
|
Java FX загрузка фотографий
|
|||
|---|---|---|---|
|
#18+
Ну, и в зависимости от того что и как часто надо ресайзить есть варианты http://stackoverflow.com/questions/244164/resize-an-image-in-java-any-open-source-library http://stackoverflow.com/questions/13892725/java-good-and-free-library-to-resize-images Потому что на родной scale народ жаловался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 16:44 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38603274&tid=2127393]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 470ms |

| 0 / 0 |
