Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Место выделенное в ОЗУ для проекта, Как виндовс определяет сколько Мб давать 
:(
    Опции темы
HyugaNeji
Дата 13.10.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 28.6.2008

Репутация: нет
Всего: нет



Привет.

У меня возник такой вопрос:

Как виндовс определяет какому приложению сколько можно давать места в ОЗУ. Или это зависит от настроек проекта?

В смысле: есть у меня прога, которая через рекурсию строит дерево, дерево очень большое , поэтому и памяти жрёт много. Я откомпилил, запустил, у меня проект ро до 98 Мб озу, и завершился нормально.
Потом база изменилась, и мне нужно было перестроить дерево заново, но теперь я запускаю проект, а он на 39 Мб озу выдаёт "Out of memory".

Я немогу понять что изменилось , и почему виндовс теперь не разрешает использовать больше 39 Мб? smile 

Хэлп плиз  smile 

P.S.  Я незнал куда надо такой вопрос задавать, подумал что тут самое подходящее место...
PM MAIL   Вверх
Lazin
Дата 13.10.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



Цитата(HyugaNeji @  13.10.2008,  14:00 Найти цитируемый пост)
Я немогу понять что изменилось , и почему виндовс теперь не разрешает использовать больше 39 Мб

нужно уточнять версию windows, 32х битная ОС windows позволяет процессу использовать до 2х Гб
в VCL, некоторые компоненты имеют собственные ограничения, на используемую память, возможно вам стоит пересмотреть свой алгоритм, или отказаться от VCL
PM MAIL Skype GTalk   Вверх
HyugaNeji
Дата 13.10.2008, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 28.6.2008

Репутация: нет
Всего: нет



Но этот же код ведь работал, я изменил тока пару записей в таблице и всё , и теперь почему то проект не хочет работать ( Я к тому что дело не в алгоритме. 
PM MAIL   Вверх
mrbrooks
Дата 13.10.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(HyugaNeji @  13.10.2008,  15:23 Найти цитируемый пост)
Но этот же код ведь работал

рабочий код и хороший, отлаженный код не есть одно и тоже. скорее всего не совсем удачная реализация алгоритма и есть поле для его оптимизации.
PM MAIL   Вверх
HyugaNeji
Дата 14.10.2008, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 28.6.2008

Репутация: нет
Всего: нет



Нет, я уже оптимизировал всё что мог....
Так вы не знаете как разрешить для проекта занимать больше памяти?
PM MAIL   Вверх
Dem_max
Дата 14.10.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 14
Всего: 39



Никак, сколько запросишь памяти, столько операционка и даст, если это возможно. Ты сам сказал что ты чтото поменял и чтото перестало работать. Ищи косяк в проге, откатывайся на тот момент когда все работало и ищи тот момент, когда у тебя начинает косячить.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Lazin
Дата 14.10.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



лучше ищи где у тебя выполняется что-то вроде mallock (очень много байт), или new аналогичного содержания
PM MAIL Skype GTalk   Вверх
ksili
Дата 14.10.2008, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Цитата(Lazin @  14.10.2008,  15:38 Найти цитируемый пост)
лучше ищи где у тебя выполняется что-то вроде mallock (очень много байт), или new аналогичного содержания

Когда мне не хватало памяти при выделении (new), Билдер выдавал сообщение 'Stack overflow', ибо память под все неглобальные пременные выделяется в стеке.
Сообщение 'Out of memory' мне говорит скорее об обращении куда-то за пределы выделенной памяти или об ошибке какого-нибудь VCL-ного объекта.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
HyugaNeji
Дата 15.10.2008, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 28.6.2008

Репутация: нет
Всего: нет



Я не менял ничего кроме имени компонента, и пару имён в таблице.

И если дело не в размере памяти, то почему мелкие деревья строятся, а большие выдают ошибку?
Наверное всё таки дело в размере занимаемой памяти...

И спасибо за попытку помочь )
PM MAIL   Вверх
Alca
Дата 15.10.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Может мало свободного места на диске? Размер свопа увеличивается автоматом?

Это сообщение отредактировал(а) Alca - 15.10.2008, 16:00


--------------------
PM WWW ICQ Skype Jabber   Вверх
Adil'
Дата 15.10.2008, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 4
Всего: 15



Цитата(ksili @  14.10.2008,  16:36 Найти цитируемый пост)
Когда мне не хватало памяти при выделении (new), Билдер выдавал сообщение 'Stack overflow',

стандартный, не перегруженный new никогда не выделяет память на стеке, и память, им выделяемая, не имеет никакого отношения к "неглобальные пременные". Stack overflow чаще всего возникает как раз при глубокой рекурсии, когда стек переполняется адресами  возврата, передаваемыми через стек параметрами и локальными переменными.

А Out of memory - хитрая ошибка, некоторые функции могут её выдавать и при невалидном указателе, переданным в неё как параметр.
Тут без ведения подробного лога в файл не обойтись. Тем более, его просто добавить - раз рекурсия.

Это сообщение отредактировал(а) Adil' - 15.10.2008, 17:15


--------------------
Удачи
PM MAIL WWW   Вверх
HyugaNeji
Дата 16.10.2008, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 28.6.2008

Репутация: нет
Всего: нет



Ну спасибо. Буду пробывать ....
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1180 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.