|
|
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
Добрый день, дорогие коллеги! Есть архив с примерно 5000 файлов размером 130 мегабайт. Вот код его распаковки Код: 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. Помогите оптимизировать распаковку, т.к. в консоле LogCat андроида ругается сборщик мусора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2014, 22:26 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
petrovichtimДобрый день, дорогие коллеги! Есть архив с примерно 5000 файлов размером 130 мегабайт. Вот код его распаковки Код: 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. Помогите оптимизировать распаковку, т.к. в консоле LogCat андроида ругается сборщик мусора. Код: java 1. 2. 3. 4. Может стоит иногда сбрасывать на диск из памяти ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2014, 22:32 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
оно ? Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2014, 22:51 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
)) попробуйте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2014, 22:58 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
Судя по http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/io/FileOutputStream.java#FileOutputStream.write(int) не поможет flush Снимите heapdump посмотрите хип ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2014, 23:05 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
Собственно close должнен вызывать flush но не у всех потоков. Посмотрел чужие примеры, везде ставят flush ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2014, 23:21 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
petrovichtimЕсть архив с примерно 5000 файлов размером 130 мегабайт. Форменное издевательство над андроидом... Это не основном потоке, надеюсь, делается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 09:02 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
wadman, Само собой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 09:40 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
petrovichtimВот код его распаковки BufferedOutputStream и BufferedInputStream не пробовали добавить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 09:50 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
Вот так ругается консолька авторGC_CONCURRENT freed 1170K, 20% free 7646K/9479K, paused 1ms+2ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 09:50 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
Вот это странный код. Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 09:53 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
Надо бы попрофилировать. Потому что код, в целом, если не считать отсутствие буфера, нормальный. https://developer.android.com/tools/debugging/debugging-memory.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 10:01 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
petrovichtimwadman, Само собой Тогда наверное стоит вставить какую-нибудь малозначительную паузу между файлами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 10:02 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
wadmanТогда наверное стоит вставить какую-нибудь малозначительную паузу между файлами? Интересный совет. Действительно, если распаковка занимает большое количество времени CPU, то GC может просто не успеть расшириться\отработать. С другой стороны должны быть большие простои на IO. Которые должны заменить эти паузы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 10:14 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
petrovichtim Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Побайтовая перекачка данных - не лучшее решение: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 11:49 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
Только неравенство должно быть нестрогое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 11:52 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovПобайтовая перекачка данных - не лучшее решение: Код: sql 1. Свой буфер аналогично. http://developer.android.com/reference/java/io/BufferedOutputStream.html Сотню тактов процессора, разве что, можно сэкономить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 11:53 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovpetrovichtim Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Побайтовая перекачка данных - не лучшее решение: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Спасибо! Решил вот так Код: 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. Вот эта вещь byte[2048] сильно влияет на производительность? Что будет если её поменять на 4048 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 13:47 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
[quot petrovichtim] Код: java 1. 2. 3. 4. 5. [quot] Это facepalm. BufferedOutputStream уже реализует запись через byte[], которую вы реализовали самостоятельно. Почему было не воткнуть ещё BufferedInputStream - для меня остаётся загадкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 13:50 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
petrovichtimВот эта вещь byte[2048] сильно влияет на производительность? Что будет если её поменять на 4048 ? Зависит от файловой системы. В теории, скорость копирования может немного увеличится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 13:52 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
BufferedOutputStream По умолчанию пишет в 8192 как я понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 14:51 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
petrovichtim BufferedOutputStream По умолчанию пишет в 8192 как я понимаю? Да. В доке так написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 15:06 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
BlazkowiczСвой буфер аналогично. http://developer.android.com/reference/java/io/BufferedOutputStream.html Толку-то? Ну заполнил рантайм этот буфер одним вызовом - в коде всё равно извлекается его содержимое по одному байту.Сотню тактов процессора, разве что, можно сэкономить.Это дисковых обращений не экономится, а процессор - ещё как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 19:44 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЭто дисковых обращений не экономится, а процессор - ещё как. На фоне разницы в IO, можно сказать что никак не экономится. Даже Unzip обходится на несколько порядков дороже, чем такая оптимизация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 19:54 |
|
||
|
Сборщик мусора тормозит
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНа фоне разницы в IO, можно сказать что никак не экономится. Даже Unzip обходится на несколько порядков дороже, чем такая оптимизация. В, принципе, для 130Мб, 5-10 секунд можно поиметь. Но боюсь себе представить сколько на мобилке будут эти 130Мб распаковываться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 20:09 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38680560&tid=2126983]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
213ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 528ms |

| 0 / 0 |
