|
|
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
что в этом коде не оптимально, что можно сделать для уменьшения потребления памяти? -Xmx256m спасает для однозадачного использования, но есть опасения что при большем числе пользователей и этого будет мало.. (сервер tomcat, debian) Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 10:36 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
ЗЫ код для варианта отладки под окнами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 10:38 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вр-первых ничего не ответит лучше чем дамп памяти. Во-вторых про закрытие инпутсримов и сопуствующее не слышали да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 13:47 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
забыл никвр-первых ничего не ответит лучше чем дамп памяти. Во-вторых про закрытие инпутсримов и сопуствующее не слышали да? в каком месте не закрыто и что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 13:53 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
2 Blazkowicz это несколько пересекается с 15821941 только используеися https://bitbucket.org/luciad/webp-imageio можешь подсказать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 14:09 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
я бы посмотрел на PlanarImage.dispose() и зачем ресайз одной картинки делается в цикле? Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 19:42 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
Dmitry.я бы посмотрел на PlanarImage.dispose() и зачем ресайз одной картинки делается в цикле? Код: java 1. 2. 3. это "хитрое умеьшение размера" дело в том, что если сразу уменьшить то качество картинки будет ужасным. поэтому необходимо уменьшать по шагам не более чем 2 раза. http://m.habrahabr.ru/post/252175/ тут хорошо описано как это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 20:32 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
авторя бы посмотрел на PlanarImage.dispose() а куда в моём коде это применить? так? Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 20:40 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
и как из этого Код: java 1. получить ещё и byte[] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 20:45 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадяэто "хитрое умеьшение размера" дело в том, что если сразу уменьшить то качество картинки будет ужасным. поэтому необходимо уменьшать по шагам не более чем 2 раза. http://m.habrahabr.ru/post/252175/ тут хорошо описано как это сделать. Там же на хабре была более внятная статья об уменьшении изображений. По-моему достаточно первым шагом сделать размытие. Тогда не будет резких перепадов от пропавших пикселей при уменьшении на втором шаге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 21:51 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczвадяэто "хитрое умеьшение размера" дело в том, что если сразу уменьшить то качество картинки будет ужасным. поэтому необходимо уменьшать по шагам не более чем 2 раза. http://m.habrahabr.ru/post/252175/ тут хорошо описано как это сделать. Там же на хабре была более внятная статья об уменьшении изображений. По-моему достаточно первым шагом сделать размытие. Тогда не будет резких перепадов от пропавших пикселей при уменьшении на втором шаге. размытие не спасает от пропавших пикселей, какая разница размытый оригинал или нет - сам ресайз в несколько раз за раз даёт это. постепенное уменьшение даже для фотошопа необходимо (если это не прописано у него в коде) это дествует и для ресайза в браузере и в (как оказалось для java) я столкнулся с этим когда делаю превьюшки (высотой 60 пикселей) из большого оригинала. так делает и браузер когда уменьшаешь изображение - сначала картинка становится маленькой, рябой, потом качество улучшается, рябь пропадает. если кто захочет убедиться - есть тестовое java приложение - могу скинуть. это увеличивает время преобразования, но нет пройгрыша в качестве. ЗЫ. вопросы в силе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 22:15 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадяразмытие не спасает от пропавших пикселей, какая разница размытый оригинал или нет - сам ресайз в несколько раз за раз даёт это. Такая, что информация размыта по соседним пикселям. Поэтому устранение соседнего пикселя не ведёт к катастрофически заметным дефектам. вадяпостепенное уменьшение даже для фотошопа необходимо (если это не прописано у него в коде) https://ru.wikipedia.org/wiki/Argumentum_ad_verecundiam вадяэто дествует и для ресайза в браузере и в (как оказалось для java) И жрет кучу ресурсов. Тем про ресайз уже было 100500. http://rsdn.ru/forum/java/2277129.1 вадяя столкнулся с этим когда делаю превьюшки (высотой 60 пикселей) из большого оригинала. Blur таки пробовал или нет? вадяЗЫ. вопросы в силе Ну, видно что POI не стримит никак. Можно попробовать изображения из POI, для начала, скинуть на диск. И потом его стримить при чтении. Но вообще стоит просто посчитать расходы памяти на хранение запакованного изображения, распакованного 24-битного растра, и результатов каждой итерации. И только потом решать действительно ли реальное потребление памяти сильно превосходит ожидаемое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 22:30 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
дефект проявляется в том, что появляются белые точки, и это как бы мало зависит от размытия, да и операция размытия тоже занимает и время и память. да и сами фотки уже качества размытые... по https://ru.wikipedia.org/wiki/Argumentum_ad_verecundiam мои заявления из практики это уж поверь на слово. http://rsdn.ru/forum/java/2277129.1 проверю, про ресайз - у меня уже есть давно работающий код, но он изменял размер не в 4-5 раз, и на нём этот дефект не проявлялся. ну и меня интересует формат webp. этот дефект проявляется очень заметко когда картинка преобразуется c изменением рамера 10+ раз. работа через диск - это уж на самый полследний случай, потому как обрабатывается из экселя в цикле до 300 картинок. по потреблению памяти понятно, что работа с картинками затратная по памяти, меня интересовал вопрос с точки зрения правильности кода, его оптимизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 07:19 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадядефект проявляется в том, что появляются белые точки, и это как бы мало зависит от размытия Откуда они появляются?? вадя, да и операция размытия тоже занимает и время и память. да и сами фотки уже качества размытые... Размытие можно реализовать на то же растре с минимальными потерями по памяти. Но будет дольше, это да. вадяпо https://ru.wikipedia.org/wiki/Argumentum_ad_verecundiam мои заявления из практики это уж поверь на слово. Ну, просто, если практики много, то должно быть понимание что и от чего, а не "в фотошопе тоже так" вадя http://rsdn.ru/forum/java/2277129.1 проверю, про ресайз - у меня уже есть давно работающий код, но он изменял размер не в 4-5 раз, и на нём этот дефект не проявлялся. ну и меня интересует формат webp. Формат не при чем. Это же растр. вадяэтот дефект проявляется очень заметко когда картинка преобразуется c изменением рамера 10+ раз. Вот этого я не учел. Давно не ресайзил. Картинки за эти годы подросли. вадяработа через диск - это уж на самый полследний случай, потому как обрабатывается из экселя в цикле до 300 картинок. Ну, тогда это не последний случай, а единственный, который поможет сэкономить память. А если планируется многопользовательский сервер, то стоит, наверное масштабирование в очередь загонять и ограничить по ресурсам. вадяпо потреблению памяти понятно, что работа с картинками затратная по памяти, меня интересовал вопрос с точки зрения правильности кода, его оптимизации. Ну, код стремный. Многоуровневые условия. Жирнючее тело. Хорошо бы побить на несколько методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 09:02 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
авторНу, просто, если практики много, то должно быть понимание что и от чего, а не "в фотошопе тоже так" как я уже двал http://m.habrahabr.ru/post/252175/, там немного сказано из-за чего такое может быть, это вроде совпадает с моими наблюдениями и выводами (на абсолютную истину не претендую) по поводу приминительно к фотошопу - ещё лет 10 назад сталкивался с подобнами рекомендациями - но там рекомендовали менять размер не более чем на 5-10% за раз. авторНу, тогда это не последний случай, а единственный, который поможет сэкономить память. А если планируется многопользовательский сервер, то стоит, наверное масштабирование в очередь загонять и ограничить по ресурсам. вот тут и хочется узнать что жрет память. как работает такая строка Код: java 1. т.е. получается что требуется двойной объём ? или правильнее сделать через дополнительный объект Код: java 1. с последующим удалением image? через gс? авторНу, код стремный. Многоуровневые условия. Жирнючее тело. Хорошо бы побить на несколько методов. по условиям тоже не нравится, но с POI не работал, поэтому взял "как есть" , если есть рекомендации по сокращению - поделись. как может помочь деление тела на методы? там вроде не так и жирно. покажи что там можно изменить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 09:35 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадя, у тебя и чтение, и масштабирование и запись, всё в одном методе. А это минимум 3 разных операции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 09:50 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
там чтение экселевского файла далее перебор картинок из него - есть смысл выносить чтение в отдельный метод? и возвращать этот набор, если помимо этого надо обработать и данные по ячейкам? вынести в отдельный метод масштабирование? что это принципиально изменит? наглядность кода - вопрос спорный, экономию памяти? ну а выносить в метод 5 строчек записи ? для увелечения числа строк программы? я просто не вижу большого смысла в этом. возможно я ошибаюсь - поправь. унификации и многократное использования этого кода в других местах проекта на планируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 10:16 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадякак я уже двал http://m.habrahabr.ru/post/252175/, там немного сказано из-за чего такое может быть, Код: java 1. Если внимательно почитать, что написано в указанной вами статье про то, что масштабирование на canvas сделано простейшим методом, а писать другие на javascript влом, и посмотрев на константы класса Interpolation, то можно задать вопрос - здесь то что мешает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 11:50 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
В принципе непонятно, зачем пользоваться ScaleDescriptor'ом из 2006 года, плюс многократное сжатие, когда нужно просто подобрать хинты для преобразования. Может, этот ScaleDescriptor и пожирает. Вот мне где-то попался набор, вполне удовлетворительно работает Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 12:42 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
ivanra, у меня тоже есть другой код для ресайза, рабочий.. я твой тоже проверю, спасибо. а ты делал этим кодом ресайз из картинки 1000*1000 в 60*60? есть возможность проверить? счас смартфоны и большее число пикселей дают авторЕсли внимательно почитать, что написано в указанной вами статье про то, что масштабирование на canvas сделано простейшим методом, а писать другие на javascript влом, и посмотрев на константы класса Interpolation, то можно задать вопрос - здесь то что мешает? честно не всё понял из написанного.. если про этоInterpolation.INTERP_BILINEAR - пробывал все варианты. ещё раз повторю - сложность заключается в изменении размера в БОЛЬШОЕ КОЛИЧЕСТВО РАЗ в проекте есть и преобразование загружаемых картинок в браузере по методу из той статьи. пусть он будет и простейший, но других мне не удалось найти. все ресайзят через канвас, либо через флэш (ну его только мне не хватало) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 13:02 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
авторВ принципе непонятно, зачем пользоваться ScaleDescriptor'ом из 2006 года, плюс многократное сжатие, я воспользовался этим вариантом https://bitbucket.org/luciad/webp-imageio/overview ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 13:07 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадя, при сильном изменении масштаба эти параметры важны: ANTIALIASING - сглаживание "лесенок" у кривых INTERPOLATION_BICUBIC - всяко лучше билинейной интерполяции (указана в первом сообщении), так как результирующее значение пикселя вычисляется из 9 соседей, а не из 4-х ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 13:13 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадяivanra, у меня тоже есть другой код для ресайза, рабочий.. я твой тоже проверю, спасибо. а ты делал этим кодом ресайз из картинки 1000*1000 в 60*60? есть возможность проверить? счас смартфоны и большее число пикселей дают У нас уменьшаются фотографии объектов (тоже со смартфонов и мыльниц). Правда, не так сильно - до 160 по бОльшей стороне, на экране монитора это примерно как 2 кадра 35мм пленки, сложенные вместе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 13:29 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадя, так что? Разобрался что пожирает память? Кто этот загадочный "лангольер"... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 13:39 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
maytonвадя, так что? Разобрался что пожирает память? Кто этот загадочный "лангольер"... ? пока нет. надо проверить код ivanra и Blazkowicz а для этого надо набраться смелости :) если есть мысли что можно поправить с наименьшими переделками - проверю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 15:05 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=129&tid=2125369]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 271ms |
| total: | 455ms |

| 0 / 0 |
