|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
По форуму и по Гуглу ничего найти не смог. Проблема в том, что ошибка возникает на некоторых компьютерах пользователей, тогда как на моем компьютере всё работает отлично. Известно только, что ошибка возникает перед вызовом Sub. У меня идет достаточно подробное логирование событий, но и это мне ничего не дает в этом случае, т.к. ошибка возникает до того, как начнет выполняться процедура. Код наподобие такого: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Т.е. я вижу только "сообщение 1" и "сообщение 2". Дальше идет сообщение об ошибке Повторюсь: код другой. Это только для демонстрации фразы "ошибка возникает до того, как начнет выполняться процедура". Код привести не смогу, т.к. он очень большой и его не целесообразно публиковать. Понятно, что по данному коду ничего не скажешь, буду признателен если хотя бы подскажете, на что обращать внимание? Логи чего нужно писать? В проекте множество форм и контролов. Можно ли считать, что параллельно ничего больше не происходит при загрузке Main? (имеется в виду, что сообщение 1 - действительно самое первое что произошло) Играет ли роль содержимое формы Form1 в данной ошибке? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 14:16 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
donpaulsВ проекте множество форм и контролов.Я сталкивался с такой проблемой а) когда на форме было очень много юзерконтролов (правда вроде с появлением 2000х виндов это прекратилось) б) когда при выгрузке формы не выгружались юзерконтролы из памяти, потому что имелись ссылки на объекты внутри них наружу или наоборот (если похоже - найду пару своих тем) - но это происходило при неоднократной загрузке-выгрузке форм. ну или Spy++ тебе в помощь ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 14:25 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
Может еще быть переполнение стека при рекурсивном вызове процедуры ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 14:39 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
Shocker.Pro, Юзерконтролов нет ни одного в проекте. Сомневаюсь также за реализацию "слушателя оконных сообщений", который загружается при загрузке формы: Код: vbnet 1. 2.
Код: vbnet 1.
взято отсюда: Обмен сообщениями между двумя СВОИМИ приложениями После применения данной функции теперь очень часто стала появляться ошибка Out of memory при работе с проектом. Однако скомпилированный файл данных ошибок на моем компе не вызывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 14:44 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
donpaulsИграет ли роль содержимое формы Form1 в данной ошибке?если она не загружается до возниконовения ошибки, то - нет ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 14:44 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
donpaulsПосле применения данной функции теперь очень часто стала появляться ошибка Out of memory при работе с проектом.похоже, что ты где-то проглядел рекурсивный вызов этого обработчика. Отключи сабклассинг и проверь. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 14:45 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
Shocker.Proпохоже, что ты где-то проглядел рекурсивный вызов этого обработчикаНет, была бы ошибка про call stack. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 14:51 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
AntonariyShocker.Proпохоже, что ты где-то проглядел рекурсивный вызов этого обработчикаНет, была бы ошибка про call stack.не всегда, иногда вылетает и с Out of memory ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 14:52 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
Shocker.ProdonpaulsПосле применения данной функции теперь очень часто стала появляться ошибка Out of memory при работе с проектом.похоже, что ты где-то проглядел рекурсивный вызов этого обработчика. Отключи сабклассинг и проверь. Как это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 15:42 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
Закомментирвать вызов SetWindowLong. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 15:44 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
Shocker.Proпохоже, что ты где-то проглядел рекурсивный вызов этого обработчика Что значит рекурсивный вызов ? Если я отключаю сабклассинг, то в процессе работы с проектом ошибка Out of memory не появляется. Но это я и так знаю, что сабклассинг влияет на ошибку в процессе выполнения проекта. Причем ошибки возникают каждый раз в разных местах. Нету такого, чтобы что-то одно вызывало ошибку. Чаще всего возникает ошибка при попытке показать какую-нибудь форму. Да, и ещё: после такой ошибки как правило проект либо зависает (приходится убивать через диспетчер задач), либо не зависает (но запустить выполнение его уже не удается, приходится закрывать и открывать заново) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2013, 11:55 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
И кстати ещё: иногда при просмотре форм в редакторе в режиме дизайна или вообще любых действий с проектом (например поиск текста) - проект вылетает. Началось это вроде как я стал использовать юзерконтролы. Но сейчас их ни одного нет в проекте - а всё равно вылетает. Может ли это быть из за сабклассинга? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2013, 12:01 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
рекурсивный вызов - вызов самого себя - имеется. Так он нужен или не нужен? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2013, 12:04 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
donpaulsрекурсивный вызов - вызов самого себя - имеется. Так он нужен или не нужен? Обработчик оконной процедуры порождает некое действие, которое инициирует SetWindowLong по какой-то причине - и так по кругу, пока память или стек не закончатся ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2013, 13:19 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
Shocker.ProОбработчик оконной процедуры порождает некое действие, которое инициирует SetWindowLong по какой-то причине - и так по кругу, пока память или стек не закончатся Так а что надо делать, чтобы этого не было? donpaulsТак он нужен или не нужен? Я пробовал удалить рекурсивный вызов - так прога вообще тогда не загружается.. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 12:32 |
|
Out of memory - как выявить причину
|
|||
---|---|---|---|
#18+
donpaulsShocker.ProОбработчик оконной процедуры порождает некое действие, которое инициирует SetWindowLong по какой-то причине - и так по кругу, пока память или стек не закончатся Так а что надо делать, чтобы этого не было?В смысле? Условно говоря, ты создаешь бесконечный цикл, а потом спрашиваешь, что делать? Не делать бесконечный цикл, что еще можно посоветовать при отсутствии кода. donpaulsdonpaulsТак он нужен или не нужен? Я пробовал удалить рекурсивный вызов - так прога вообще тогда не загружается..так откуда нам знать, нужен он тебе или не нужен. рекурсия может использоваться в определенных алгоритмах, например при обходе деревьев, но бесконечная рекурсия - это ошибка программиста. И, напоминаю, проблема с бесконечной рекурсией - это всего лишь мое предположение. Ты уже нашел, что дело в сабклассинге, так рой дальше, отключай функциональность по частям. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 12:39 |
|
|
start [/forum/topic.php?fid=60&msg=38329400&tid=2156863]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 273ms |
total: | 424ms |
0 / 0 |