![]() |
|
![]() ![]() ![]() |
|
HyugaNeji |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.6.2008 Репутация: нет Всего: нет |
Привет.
У меня возник такой вопрос: Как виндовс определяет какому приложению сколько можно давать места в ОЗУ. Или это зависит от настроек проекта? В смысле: есть у меня прога, которая через рекурсию строит дерево, дерево очень большое , поэтому и памяти жрёт много. Я откомпилил, запустил, у меня проект ро до 98 Мб озу, и завершился нормально. Потом база изменилась, и мне нужно было перестроить дерево заново, но теперь я запускаю проект, а он на 39 Мб озу выдаёт "Out of memory". Я немогу понять что изменилось , и почему виндовс теперь не разрешает использовать больше 39 Мб? ![]() Хэлп плиз ![]() P.S. Я незнал куда надо такой вопрос задавать, подумал что тут самое подходящее место... |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
нужно уточнять версию windows, 32х битная ОС windows позволяет процессу использовать до 2х Гб в VCL, некоторые компоненты имеют собственные ограничения, на используемую память, возможно вам стоит пересмотреть свой алгоритм, или отказаться от VCL |
|||
|
||||
HyugaNeji |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.6.2008 Репутация: нет Всего: нет |
Но этот же код ведь работал, я изменил тока пару записей в таблице и всё , и теперь почему то проект не хочет работать ( Я к тому что дело не в алгоритме.
|
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
HyugaNeji |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.6.2008 Репутация: нет Всего: нет |
Нет, я уже оптимизировал всё что мог....
Так вы не знаете как разрешить для проекта занимать больше памяти? |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
Никак, сколько запросишь памяти, столько операционка и даст, если это возможно. Ты сам сказал что ты чтото поменял и чтото перестало работать. Ищи косяк в проге, откатывайся на тот момент когда все работало и ищи тот момент, когда у тебя начинает косячить.
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
лучше ищи где у тебя выполняется что-то вроде mallock (очень много байт), или new аналогичного содержания
|
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Когда мне не хватало памяти при выделении (new), Билдер выдавал сообщение 'Stack overflow', ибо память под все неглобальные пременные выделяется в стеке. Сообщение 'Out of memory' мне говорит скорее об обращении куда-то за пределы выделенной памяти или об ошибке какого-нибудь VCL-ного объекта. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
HyugaNeji |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.6.2008 Репутация: нет Всего: нет |
Я не менял ничего кроме имени компонента, и пару имён в таблице.
И если дело не в размере памяти, то почему мелкие деревья строятся, а большие выдают ошибку? Наверное всё таки дело в размере занимаемой памяти... И спасибо за попытку помочь ) |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Может мало свободного места на диске? Размер свопа увеличивается автоматом?
Это сообщение отредактировал(а) Alca - 15.10.2008, 16:00 |
|||
|
||||
Adil' |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 4 Всего: 15 |
стандартный, не перегруженный new никогда не выделяет память на стеке, и память, им выделяемая, не имеет никакого отношения к "неглобальные пременные". Stack overflow чаще всего возникает как раз при глубокой рекурсии, когда стек переполняется адресами возврата, передаваемыми через стек параметрами и локальными переменными. А Out of memory - хитрая ошибка, некоторые функции могут её выдавать и при невалидном указателе, переданным в неё как параметр. Тут без ведения подробного лога в файл не обойтись. Тем более, его просто добавить - раз рекурсия. Это сообщение отредактировал(а) Adil' - 15.10.2008, 17:15 -------------------- Удачи |
|||
|
||||
HyugaNeji |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.6.2008 Репутация: нет Всего: нет |
Ну спасибо. Буду пробывать ....
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |