![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Хочу начать большой проект и опасаюсь не уложится в отведеные 2 Gb ОЗУ памяти приложению. Каким образом можно обойти это ограничение?
P.S. На С++ переходить крайне не хочется, поскольку незнаю его так как знаю Delphi. |
#2
|
|||
|
|||
![]() А ты думаешь, что реально займешь столько памяти?
Тогда при проектировании подумай о том, куда можно выгружать ненужные в данный момент данные, что бы в памяти реально были только обрабатываемые в текущий момент данные. Более точно посоветовать не могу не зная специфики проекта. Например, если это, например, верстка, то разные верстальные пргограммы хранят в памяти только превью графики, а саму графику грузят только тогда, когда выводят "пленки". |
#3
|
|||
|
|||
![]() Цитата:
в том то и дело, что нечего выгружать, все данные требуют текущей обработки. |
#4
|
|||
|
|||
![]() Цитата:
есть такое уникальное понятие как файлы... не хочешь забивать оперативную, забивай физическую.. например переменные, массивы, строки, изображения... да, и вообще краткий смысл программы каков? чего она столько выгружает? |
#5
|
|||
|
|||
![]() Цитата:
в том то и дело что я хочу оперативную забить (у меня её 8 Gb и операционка 64-битная), но не могу в силу ограничения 32-битной архитектуры. Вот и вопрос соотвествующий как это ограничение обойти? А прога если совсем в кратце это онлайн сервер для MMOG. |
#6
|
|||
|
|||
![]() Вопрос как обойти 32 битное ограничение? Вопрос снят - невозможно (компилятор 32 битный)
Где - то я читал про ограничение в 2 Gb, но не смог найти сейчас. Поэтому у меня такой вопрос, почему бы не использовать стек? И поясню. Стек - это некоторая область памяти, которая организована специальным образом. Основной принцип при работе стека - первый пришел - последним ушел. Для работы со стеком нужно знать один адрес - а именно адрес доступного элемента стека (верхнего). Адрес, по которому находится верхний элемент стека, хранится в регистре SP (Stack Pointer). Этот адрес постоянно меняется - когда мы кладем очередной элемент в стек, то этот адрес уменьшается. Для работы стека нужен еще сегментный регистр SS (Stack Segment). В нем хранится граница стека, за которую стек перейти не может. Это значение не меняется - оно всегда одно и то же. |
#7
|
|||
|
|||
![]() Обойти возможно. Ответ нашелся как ни странно тут http://support.microsoft.com/kb/283037
Это уже хоть както обнадеживает, осталось только разобратся как это сделать ![]() Главное теперь можно смело начинать кодить проект на Delphi. Вот пример сервера MMOG ![]() |
#8
|
||||
|
||||
![]() В 32 битной ОС предел не 2 ГБ а 3 с мелочью. Поэтому ничего делать не нужно
![]() И вроде бы еще если поставить SP3 то будет 4. |