Ошибка достала...



  • @Viktor said in Ошибка достала...:

    @Zenodrot все существует и работает, проходит до конца. Ошибка в рандомном порядке: иногда несколько часов пашет, иногда несколько секунд. Вылетает БАС целиком.

    а ты наблюдал за памятью и загруженности процика? на весь период работы скрипта



  • @Zenodrot процу все равно, 8 ядер i7, памяти много выделяется, да. Но запас еще остается существенный. Дело не в этом. 600 мб еще оставалось, прога крашнулась.



  • @Viktor said in Ошибка достала...:

    @Zenodrot процу все равно, 8 ядер i7, памяти много выделяется, да. Но запас еще остается существенный. Дело не в этом. 600 мб еще оставалось, прога крашнулась.

    600 мб от обшей?? это мало критически
    ты что в память загрузаешь, списки большие?



  • @Zenodrot поток чуть больше сотни жрет.Вдобавок, стоит префетчер, я его так и не смог отрубить, хотя на ноль поставил где надо в реестре



  • @Viktor said in Ошибка достала...:

    @Zenodrot поток чуть больше сотни жрет.

    нужно проект оптимизировать чтобы ресурсы хватило, наример можно большой список загнать в память в один поток повиснет все и вся

    у тебя ситуация такая, софт хават ресурсы его каканить тулза вышибает, мб оптимизаторы или еще какая хня



  • @Zenodrot софт работает в виртуалке, я так понимаю, что на нее память сразу выделяется. Или нет?



  • @Viktor said in Ошибка достала...:

    @Zenodrot софт работает в виртуалке, я так понимаю, что на нее память сразу выделяется. Или нет?

    да под нее выделяется, а далее в ней уже скрипт до критической точки хавает память, 600 мб от обшей это мало очень я думаю ИМХО я максимум везде допускаю 80% загружености

    на виртуалки включен фаил подкачки?



  • @Zenodrot конечно включен, три ГБ, щас работает в три потока, доступен гиг 300 именно физической памяти, столько диспетчер задач именно в виртуалке кажет..



  • @Viktor said in Ошибка достала...:

    @Zenodrot конечно включен, три ГБ, щас работает в три потока, доступен гиг 300 именно физической памяти, столько диспетчер задач именно в виртуалке кажет..

    да тести на разных потоках, наблюдай за ресурсами, там видно уже будет в этом ли причина

    Я делал как, у меня был большые данные которые подгружались в переменку, это оперативка, далее чтобы поток с этой переменкой не работал пока нет необходжимости я выгружал память занулением переменки а эти данные выкладывал на ХД и когда опять нужны были подгружал в переменку и работал с ними и т.д, так можно оптимизировать память
    мб ситуевина такая - имеем данные в оперативке с ними работаем и далее еще к ним накидываем данных и так всю память отъест и софт есесно крашниться
    помни что Переменная это область оперативной памяти

    а если грузит процик, глянь может ты лишнии операции делаешь и можно их свести на минимум и сильно разгрузить вычисления
    можно один фаил дрочить в 1000 потоков теребить его удалять строки добавлять и т.д, проц есесно будет нагружаться вместе с ХД запись чтение



  • This post is deleted!


  • @Zenodrot Спасибо за инфу!
    Значит, просто устанавливаешь переменную в 0, и все, память почистилась? А по завершению потока это афтаматом происходит, или нет?



  • @Viktor После завершения потока все данные переменных очищаются. Не обязательно записывать в переменную 0, что очистить память. Можно её просто удалить переменную TEST в выполнить код :

    delete VAR_TEST;
    

    Только мне это не сильно помогало.



  • @Fox почему не помогало?



  • @Viktor Прирост производительности оказался незначительным. Проект заиграл новыми красками, когда перевёл его на запросы.



  • @Fox said in Ошибка достала...:

    @Viktor После завершения потока все данные переменных очищаются. Не обязательно записывать в переменную 0, что очистить память. Можно её просто удалить переменную TEST в выполнить код :

    delete VAR_TEST;
    

    Только мне это не сильно помогало.

    я зануляю когда поток работает не завершаясь, выгружаю под него оперативку, а далее поток проделав операции сново берет себе данные, засчет этого оперативка освобождается для другого потока и так по цепочке



  • @Viktor да просто 0 ставим туда, ну а если тебе освобождать не в ходе выполнения, то автоматом поток разгружает озу по завершению, как сказал Лис.



  • @Zenodrot Всё зависит от объёма данных, да и вообще, логики скрипта. В том проекте у меня всё делалось через браузер и в один поток :D. Я только начинал осваивать BAS.
    Обнулять переменную есть смысл если объём обрабатываемых данных велик. Хотя если ты данные берёшь из текстового документа, можно его читать по частям и обработать его целиком в цикле, сработает дольше, но оперативка будет тратится меньше.



  • @Viktor said in Ошибка достала...:

    @Fox почему не помогало?

    учитываем браузер, он грузит скрипты и т.д а если юзаем http клиент то там только запросы, ответы без скриптов, картинок и т.д без бразера в общем шустро все летает. А если без его эмуляции никак то работая с ним в потоках оптимизируй на минимум инфы в переменных, храни масивы инфы на диске периодически подгружая выгружая.



  • @Zenodrot это частично сделано



  • @Fox said in Ошибка достала...:

    @Zenodrot Всё зависит от объёма данных, да и вообще, логики скрипта. В том проекте у меня всё делалось через браузер и в один поток :D. Я только начинал осваивать BAS.
    Обнулять переменную есть смысл если объём обрабатываемых данных велик. Хотя если ты данные берёшь из текстового документа, можно его читать по частям и обработать его целиком в цикле, сработает дольше, но оперативка будет тратится меньше.

    я про это и говорю, если нужно обработать лям строк, не в оперативе же с ними работаем а берем с ХД по строке и в путь

    например первый поток берет 1000 строк списком, делает с ним манипуляции переходит к другому действию где этот список уже ненужен, и чтобы он в переменке не торчал до того как поток закончит работу мы переменку нулим или удаляем. В этоге в процесе выполнения поток не носит с собой эти 1000 строк.


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.