|
|
|
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 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
YuRockalekcvpпропущено... Кстати, а чем вы так синхронайз не любите? Они же вроде, в последних версиях, их переделали?Не знаю, что там сейчас, но тем, что до D7, пользоваться было нельзя по большому ряду причин. К счастью, в этом и нет никакой необходимости. Стандартный набор граблей synchronize можно увидеть и самому, посмотрев реализацию, ну например: 1. Вызов synchronize навсегда зависнет, если его вызвать до Application.Run; 2. Навсегда зависнет, если вообще и не планировался вызов Application.Run (dll, консоль,...); 3. Навсегда зависнет, если работает еще один цикл обработки сообщений, запущенный при обработке сообщения в Application.Run; 4. Невозможность управления потоками, висящими на synchronize. Другие методы синхронизации дают такую возможность. Первые три пункта далеко не всегда зависят от разработчика. Поэтому если кто-то наговнокодил с synchronize - другим приходится мучиться или переделывать. какие страсти-то )))) а ведь работало и работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 21:16 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
YuRock3. Навсегда зависнет, если работает еще один цикл обработки сообщений, запущенный при обработке сообщения в Application.Run;* Не через делфовый HandleMessage. Либо через него, но из dll. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 21:17 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
defecatorкакие страсти-то )))) а ведь работало и работаетУгу. Достаточно часто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 21:18 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
YuRockdefecatorкакие страсти-то )))) а ведь работало и работаетУгу. Достаточно часто. не буду спорить у каждого свой опыт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 21:23 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Есть же ещё асинхронный метод TThread.Queue . Сам его вроде не использовал, обычно посылаю сообщения, но кто-то в этом форуме (Дельфи) его несколько раз упоминал, я собственно так и узнал о его существовании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 22:18 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
s62Есть же ещё асинхронный метод TThread.Queue . Сам его вроде не использовал, обычно посылаю сообщения, но кто-то в этом форуме (Дельфи) его несколько раз упоминал, я собственно так и узнал о его существовании.Я упоминал. Хорошая замена из коробки synchronize-ам и PostMessage-ам в 90% случаев. Используется в наших визуальных компонентах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 23:05 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
white_nigger, из минусов - несинхронная. не всегда удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 00:37 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Любую несинхронную вещь можно сделать синхронной. Обратное сделать сложнее. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 00:44 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
При выполнении в главном потоке насколько я понимаю, Queue выполняется сразу как обычный кусок кода. А несинхронность это как раз и есть то, для чего это используется, не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 10:00 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
s62Есть же ещё асинхронный метод TThread.Queue Не смотрел. Подозреваю, что это тот же Synchronize, только без ожидания выполнения. Т.е. те же грабли, только без зависания потоков при наступлении на них - просто код не выполнится никогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 14:41 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
YuRocks62Есть же ещё асинхронный метод TThread.Queue Т.е. те же грабли, только без зависания потоков при наступлении на них - просто код не выполнится никогда. Посмотрел код Synchronize в XE2 - вообще не понял, каким образом он может зависеть от Application.Run, в отличие от того же SendMessage... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 15:02 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
alekcvpYuRockпропущено... Т.е. те же грабли, только без зависания потоков при наступлении на них - просто код не выполнится никогда. Посмотрел код Synchronize в XE2 - вообще не понял, каким образом он может зависеть от Application.Run, в отличие от того же SendMessage... Плохо ведь смотрел... А в Forms.TApplication.Idle заглядывал? А в Classes.CheckSynchronize? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 15:22 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, думаю, что PostMessage или Synchronize будет проще чем TThread.Queue + 'ручная' синхронизация. случаи, конечно, всякие бывают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 15:31 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
ИМХО, вообще корявые методы, и либо название неправильное дали или запихнули не туда проектировщику оторвать бы руки, а может быть и ноги и местами поменять, что бы осознал что натворил ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 16:31 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)проектировщику оторвать бы руки, а может быть и ноги и местами поменять, что бы осознал что натворил ... имхо, в последнее время половина топиков в этой ветке заканчивается именно этими выводами. Неужели все так плохо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 18:16 |
|
||
|
2 цикла в потоке сжирают память
|
|||
|---|---|---|---|
|
#18+
оторванные рукиkealon(Ruslan)проектировщику оторвать бы руки, а может быть и ноги и местами поменять, что бы осознал что натворил ... имхо, в последнее время половина топиков в этой ветке заканчивается именно этими выводами. Неужели все так плохо? Ну так это вполне логично. Ведь Дельфи давно мёртв (с). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 18:45 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2041361]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 507ms |

| 0 / 0 |
