Out of memory exception при попытке сбилдить проект

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MiGan
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 02.05.2005 (Пн) 13:27

Out of memory exception при попытке сбилдить проект

Сообщение MiGan » 29.03.2006 (Ср) 10:58

Товарищи... Помогите, как мне сбилдить проект? При запуске билда кидается вышеуказанный эксепшн. В документации написан какой то бред про то, что нужно уменьшить размер процедур, чтобы объем кода был не более 64k, и уменьшить количество public variables. Число публичных переменных у меня составляет порядка 20 (не считая констант). Две самые большие процедуры я вообще вырезал, оставив только их вызовы. Так, мой проект содержит 43 класса, 28 форм, 9 модулей и 16 юзер контролов. Может такое большое количество объектов стать причиной отказа билдится у студии. И что здесь можно сделать? Проект уже должен в скором времени поступить в продакшн, а запускать я его могу тока в дебаге. Помогите, пожалуйста!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.03.2006 (Ср) 11:17

По Ctrl+F5 он нормально запускается?
Lasciate ogni speranza, voi ch'entrate.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 29.03.2006 (Ср) 11:32

Доставить памяти на машину. Обычно помогает.

Но вообще, такие монстры в любом случае становятся малоуправляемыми, даже в скомпилированном виде. Тут уже нужно дробить на составные части - например, вынести все юзерконтролы в отдельную DLL/OCX. Правда, просто перенести не получится, придется слегка ручками подправить, но это настолько малая кровь по сравнению с остальными вариантами решения, что...

MiGan
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 02.05.2005 (Пн) 13:27

Сообщение MiGan » 29.03.2006 (Ср) 11:33

Да, нормально. Запускается, работает и не падает.

MiGan
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 02.05.2005 (Пн) 13:27

Сообщение MiGan » 29.03.2006 (Ср) 11:41

Ennor писал(а):Доставить памяти на машину. Обычно помогает.

Но вообще, такие монстры в любом случае становятся малоуправляемыми, даже в скомпилированном виде. Тут уже нужно дробить на составные части - например, вынести все юзерконтролы в отдельную DLL/OCX. Правда, просто перенести не получится, придется слегка ручками подправить, но это настолько малая кровь по сравнению с остальными вариантами решения, что...


На моей машине 2 гига памяти (P IV HT 3Gz). Я постоянно работаю в 2005 студии и компилю сишарповский проект, размеры которого раз в 5 превышают размеры моей аппликухи. Думаю, трабла не в этом. Браться за разбиение проекта на dll и ocx - а если это не поможет?

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 29.03.2006 (Ср) 11:54

На моей предыдущей работе была пара проектов, которые компилялись строго через раз. Размер каждого из них получался ок. 9 метров, при этом внутри был такой фарш, что страшно вспомнить - из использованных компонентов Crystal Reports 7/8 был одним из самых простых.
Ну, что - в конечном итоге выяснилось, что компиляция не падает, если ее запустить сразу же после открытия проекта, ничего не редактируя и не запуская. Попробуй, вдруг поможет.

Да, на наших машинах там было по 128 метров оперативки...

S397
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 02.12.2005 (Пт) 13:31

Сообщение S397 » 29.03.2006 (Ср) 12:08

Думаю, для начала надо попробовать собрать проект на машине, где VS 2005 не устанавливалась. Аналогичная ошибка стала возникать у меня после совместной установки VS6 и VS 2005

MiGan
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 02.05.2005 (Пн) 13:27

Сообщение MiGan » 29.03.2006 (Ср) 12:22

S397 писал(а):Думаю, для начала надо попробовать собрать проект на машине, где VS 2005 не устанавливалась. Аналогичная ошибка стала возникать у меня после совместной установки VS6 и VS 2005

Пробовал. Та же туфта на машинах со 128 и 512 метрами.

MiGan
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 02.05.2005 (Пн) 13:27

Сообщение MiGan » 29.03.2006 (Ср) 12:35

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

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 29.03.2006 (Ср) 14:05

Эти места находятся в компиляторе :D
По-любому такого монстра нужно разбивать на части. При большом количестве кода и форм, особенно если формы сложные, возникают всякие недопустимые ошибки при работе exe в самом ядре vb. Да и memory leak достигает астрономических высот.

У меня была ситуация, когда при открытии формы нужно было вытянуть из базы кучу данных и произвести с ними предварительные манипуляции. В ide все работало, а exe падал на этой форме. Добавил DoEvents, причем даже не в цикл, - заработало. Но в дальнейшем все равно пришлось форму разбивать на две.
Лучший способ понять что-то самому — объяснить это другому.

MiGan
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 02.05.2005 (Пн) 13:27

НАШЕЛ!!!

Сообщение MiGan » 31.03.2006 (Пт) 19:13

Нашел блин! Дело в Infragistic компоненте Ultra Tool Bar 5.0. При удалении референса на него прога билдится нормально! Может, когда-нибудь, эта информация сможет кому-нибудь помочь!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 68

    TopList