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



  • Имя события проблемы: APPCRASH
    Имя приложения: BrowserAutomationStudio.exe
    Имя модуля с ошибкой: Engine.dll
    Версия модуля с ошибкой: 0.0.0.0
    Код исключения: c0000005
    Смещение исключения: 00064b5e
    Код языка: 1049
    Дополнительные сведения 1: 0a9e
    Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789

    Проблема в NET Framework, я прав?
    ЗЫ. Эта тема повторяется на разных системах, регулярно.

    UPD. Это не фреймворк. Поставил последнюю версию с мелкомягких, все равно в рандомном порядке генерится ошибка и ВЫЛЕТАЕТ!!!



  • @Viktor фрам не требуется для BAS
    а при каких обстоятельствах вылетает? когда свой проет подгружаешь?
    МБ Причина в том, что используешь ресурс для количества потоков, которого не существует



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



  • @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.
    Обнулять переменную есть смысл если объём обрабатываемых данных велик. Хотя если ты данные берёшь из текстового документа, можно его читать по частям и обработать его целиком в цикле, сработает дольше, но оперативка будет тратится меньше.


Log in to reply