|
|
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Доброе время суток, имеется поток, который каждые 10 сек, читает лог. В нем имеется 2 цикла, которые анализируют последнюю строку лога, и выделяют из нее значения нужных мне параметров (для отображения их в программе). И как показали опыты, эти циклы почему-то сжирают память (если их закоментировать то с память сжираться не будет) Код: pascal 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. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. что в этих циклах может память не отдавать... теряюсь в догадках Заранее спасибо за ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 22:35 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Sergey-2008что в этих циклах может память не отдавать... теряюсь в догадках FastMM + FullDebugMode помогут найти ответ на этот вопрос. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 22:48 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Да еще если поток зациклить, то окажеться что с памятью будет все норм., т.е. программа ее не будет захламлять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 23:03 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Sergey-2008, кода мало. Например, ты в цикле обращаешься к CLEAR_VALUE_VIDEO, в которой сбрасываешь строки: Код: pascal 1. 2. Что за Pr_ValGPU, Pr_ValTemp? Если это - "глобальные" переменные, живущие вне контекста нити - вот тебе и утечка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 23:06 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
чччД, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 23:46 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Но в "Pr_ValTemp", "Pr_ValGPU" хранятся только цифры Каждый раз при выполнени потока, память увеличивается на 100КБ. (всего я храню в переменных 4 числа) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 23:52 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Sergey-2008имеется поток, который каждые 10 сек, читает лог. а где в приведенном коде участок, который подтверждает данное заявление? я к тому, что цикл без слипа Код: pascal 1. 2. 3. 4. весьма чувствительно напрягает ЦП даже при единственном запущенном доп.потоке. Если же их запустить несколько, то там будет еще интереснее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 01:23 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Док, похоже, ТС исследует уязвимость типа Meltdown. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 01:34 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
чччД, ТС, похоже, только начал изучать потоки. До сообщений в основной поток пока не дошел. Видишь, как Synchronize интенсивно использует. Следующим этапом будет попытка использовать компонент wadman'а :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 08:36 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
а вот тут явно не с нуля надо индекс перебирать Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 10:05 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Sergey-2008 Код: pascal 1. Terminate не обнаружено Sergey-2008имеется поток, который каждые 10 сек, читает лог.Никакой приостановки потока тоже не обнаружено. Не создаете ли Вы каждые 10 секунд новый поток? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 12:30 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Sergey-2008, 1. Удаляй созданные объекты всегда строго в try-finally; 2. Полностью откажись от synchronize. Потом можно будет дальше говорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 13:47 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
YuRock2. Полностью откажись от synchronize. Кстати, а чем вы так синхронайз не любите? Они же вроде, в последних версиях, их переделали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 15:25 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
alekcvpYuRock2. Полностью откажись от synchronize. Кстати, а чем вы так синхронайз не любите? Они же вроде, в последних версиях, их переделали? но осадочек остался (с) P.S. Я пользуюсь синхронайзом без зазрения совести, если вижу в нём необходимость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 15:52 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
alekcvpа чем вы так синхронайз не любите? Его ограниченность на запуск методом без параметров и отсутствие возможности вернуть результат лично меня напрягают. Глобальные переменные (даже локально-глобальные поля класса) - зло. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 16:12 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovalekcvpа чем вы так синхронайз не любите? Его ограниченность на запуск методом без параметров и отсутствие возможности вернуть результат лично меня напрягают. Глобальные переменные (даже локально-глобальные поля класса) - зло. глобальные переменные, "запуск методом без параметров" и "отсутствие возможности вернуть результат" намешал опять в одну кучу ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 16:23 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Ну смотри: когда я использую SendMessage, то могу ему прямо передать два параметра и прямо же вернуть число. Synchronize так не может, приходится использовать методы с побочными эффектами и передавать значения через поля класса. Когда я использую PostMessage, то работа продолжается без ожидания, чего Synchronize опять же не может. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 16:28 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, так ты не передавай, кто мешает в стэке выделить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 16:40 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНу смотри: когда я использую SendMessage, то могу ему прямо передать два параметра и прямо же вернуть число. Synchronize так не может, приходится использовать методы с побочными эффектами и передавать значения через поля класса. Когда я использую PostMessage, то работа продолжается без ожидания, чего Synchronize опять же не может. ну есть же разные необходимости синхронизации например, в системе видеонаблюдения надо пинговать камеры на их присутствие. пропадание видеопотока с камеры не говорит о том, что камеры нет в сети может быть, надо просто перезапросить поток. пинг вещь длинная, городить вокруг этого SendMessage-PostMessage нет смысла если раз в пять секунд произойдёт Synchronize от пинговального потока, нет ничего страшного. Это я просто пример привёл, если что ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 16:50 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
defecatorЭто я просто пример привёл, если что Забавно, что ты привёл как раз пример, где ни Synchronize, ни любая другая синхронизация вообще не требуются. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 17:02 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovdefecatorЭто я просто пример привёл, если что Забавно, что ты привёл как раз пример, где ни Synchronize, ни любая другая синхронизация вообще не требуются. с твоей точки зрения - не требуется с моей точки зрения - требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 17:05 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
defecatorесли раз в пять секунд произойдёт Synchronize от пинговального потока, нет ничего страшногоИ чем этот пинговальный поток будет лучше таймера в главном потоке? Названием только красивым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 20:57 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
YuRockdefecatorесли раз в пять секунд произойдёт Synchronize от пинговального потока, нет ничего страшногоИ чем этот пинговальный поток будет лучше таймера в главном потоке? Названием только красивым. за 5 секунд произойдёт десяток попыток пинга внутри потока, а результат вылезет наружу только раз в пять секунд. Зачем главному потоку вообще знать о том, что там что-то такое постоянно работает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 21:08 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
alekcvpYuRock2. Полностью откажись от synchronize. Кстати, а чем вы так синхронайз не любите? Они же вроде, в последних версиях, их переделали?Не знаю, что там сейчас, но тем, что до D7, пользоваться было нельзя по большому ряду причин. К счастью, в этом и нет никакой необходимости. Стандартный набор граблей synchronize можно увидеть и самому, посмотрев реализацию, ну например: 1. Вызов synchronize навсегда зависнет, если его вызвать до Application.Run; 2. Навсегда зависнет, если вообще и не планировался вызов Application.Run (dll, консоль,...); 3. Навсегда зависнет, если работает еще один цикл обработки сообщений, запущенный при обработке сообщения в Application.Run; 4. Невозможность управления потоками, висящими на synchronize. Другие методы синхронизации дают такую возможность. Первые три пункта далеко не всегда зависят от разработчика. Поэтому если кто-то наговнокодил с synchronize - другим приходится мучиться или переделывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 21:12 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
defecatorYuRockпропущено... И чем этот пинговальный поток будет лучше таймера в главном потоке? Названием только красивым. за 5 секунд произойдёт десяток попыток пинга внутри потока, а результат вылезет наружу только раз в пять секунд. Зачем главному потоку вообще знать о том, что там что-то такое постоянно работает ?Я думал у тебя сам пинг в синхронайз делается раз в пять секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 21:15 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39580432&tid=2041361]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 499ms |

| 0 / 0 |
