powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / работа с большими объёмами памяти
20 сообщений из 45, страница 2 из 2
работа с большими объёмами памяти
    #39476435
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user_aа под 64 бит же тоже может не оказаться непрерывного куска в несколько ГБ? тогда в чём разница, именно в этой части? т.е., всё равно придётся создавать массив "по частям".

а ещё в delphi переменная не может быть более 2 гб. так что "одним куском" и так бы не получилось.
Вы хотите странного.
Зачем вам непрерывный кусок памяти более 2-х гб да еще "в одной переменной" (даже не знаю что бы это значило)?

P.S. Поставьте на сервер 512 Гб оперативки. Все шансы на то что 4 гига непрерывным куском вы найдете.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476440
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
var
  B : TBytes;
begin
  SetLength(B,NativeInt(5)*1024*1024*1024);



Выделился массив на 5 гигов. Что я делаю не так?
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476443
user_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну, тот же динамический массив - одна переменная.
а если задавать тип как одномерный массив, а другой тип, как одномерный массив элементов первого типа, то переменная 2-го типа будет хранить указатели на переменные 1-го типа, каждые из которых не могут превышать 2 гб, но в целом "массив" может превышать 2 гб.
а если задать сразу двухмерный массив в одном типе данных, то весь массив не сможет превышать 2 гб.

это в delphi 32-бит, в смысле.

и в каком виде предлагается хранить линейную последовательность данных большого объёма, чтобы по-правильному?
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476455
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

попробуй, к слову, в него залить 5 гиг. получится?
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476456
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user_a, ну,тот же динамический массив - одна переменная.да, одна переменная - глобальная или на стеке, размер которой SizeOf(Pointer).
И в эту переменную, после удачного вызова GetMem или SetLength, будет записан адрес (начало)
виртуального адресного куска нужной длины.

и в каком виде предлагается хранить линейную последовательность данных большого объёма,на диске в файле.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476461
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonrgreat,

попробуй, к слову, в него залить 5 гиг. получится?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var
  B : TBytes;
  i : integer;
  s : string;
begin
  SetLength(B,NativeInt(5)*1024*1024*1024);
  for i:=0 to High(B) do begin
    B[i]:=i and $FF;
  end;

  s:='';
  for i:=High(B)-10 to High(B) do begin
    s:=s+';'+B[i].ToString;
  end;
  ShowMessage(s);



';245;246;247;248;249;250;251;252;253;254;255'
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476462
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i : Int64;
конечно-же.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476463
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В памяти - 5 с лишним гигов.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476464
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user_aи в каком виде предлагается хранить линейную последовательность данных большого объёма, чтобы по-правильному?В том, который нужен по условию задачи.
Если это не мешает быстродействию.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476466
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На очень больших объемах я бы посоветовал рекорды.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476473
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user_aэффективность занимаемого пространства - сильно уменьшилась. https://kent.dl.sourceforge.net/project/freepascal/Win32/3.0.2/fpc-3.0.2.i386-win32.cross.x86_64-win64.exe
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
program pr;
const
 c = 1024*1024*1024*5;
var
 t : PByte;
 i : NativeInt;
begin
 GetMem(t, c);
 for i := 1 to c do begin
  t^ := Byte(i);
  Inc(t);
 end;
 Dec(t, c);
 FreeMem(t);
end.

Код: plaintext
1.
ppcrossx64.exe pr.dpr
pr.exe
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476490
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user_aа под 64 бит же тоже может не оказаться непрерывного куска в несколько ГБ?

Крайне маловероятно. Там теоретические 16 эксабайт, с практическим пределом в 8 Тб для user mode (надо проверить, может в последних версиях Windows уже подняли).

user_aа ещё в delphi переменная не может быть более 2 гб

Смотря какая переменная.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476725
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этом вопросе главное не путать физическую память с виртуальной памятью процесса. Под х64 нет проблем выделить большой непрерывный кусок. Размер будет ограничиваться только размером подкачки.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476799
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57,

у некоторых программ с этим проблемы. Я столкнулся с таким, когда эмулятору андроида (во времена ХЕ5) задал устройство с 512мб памяти, и он при старте псевдо-устройства не мог выделить кусок памяти. Хотя на 16 гиг RAM было свободно больше половины. Помогала только перезагрузка ОС и сразу запуск эмулятора.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476970
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57В этом вопросе главное не путать физическую память с виртуальной памятью процесса. Под х64 нет проблем выделить большой непрерывный кусок. Размер будет ограничиваться только размером подкачки.
В ряде случаев, на Windows, нифига ничего не выделяется. Почему и в чем у кого проблемы, фиг его знает.

Сталкивался на Windows 7, комп с RAM 32 Gb, при попытке запускать много приложений иногда около 6-8 Gb под Java JVM одним куском Windows выделить не мог. Хотя и виртуальной и даже просто free памяти (32 Gb - использованное место) было достаточно.

На компе запускалась пара виртуалок в VmWare Player'е + JDeveloper + пара инстанцев WebLogic + Oracle Database.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476978
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevВ ряде случаев, на Windows, нифига ничего не выделяется. Почему и в чем у кого проблемы, фиг его знает.
Подкачка,проецируемые в память файлы, кэш... Где-то должен быть затык.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476980
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мешала фрагментация скорей всего.
Нужен-то непрерывный кусок в 6-8 гб.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476983
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatМешала фрагментация скорей всего.
Нужен-то непрерывный кусок в 6-8 гб.Не помню точно, но есть флаги для выделения памяти сверху/снизу. Может снизу был облом из-за фрагментации. Но сверху никто не мешает замапить кусок. В х64 сколько адресного пространства - попой ешь.
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476987
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я к тому, что утверждение
В этом вопросе главное не путать физическую память с виртуальной памятью процесса. Под х64 нет проблем выделить большой непрерывный кусок. Размер будет ограничиваться только размером подкачки.

не совсем истинное. Проблемы могут быть. В чем и у кого... ОС, кривые руки разработчиков, что-то еще... не столь важно.

В общем, не стал бы относить решение "выделить дофига ГигаБайт одним куском" к бест практикс. IMHO
...
Рейтинг: 0 / 0
работа с большими объёмами памяти
    #39476998
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev, ну дык авторРазмер будет ограничиваться только размером подкачки
А так-то да. Какой-нить орацл забабахает mmf, выжрав всю подкачку и привет. А теоретически - проблем нет. Для х86 нельзя выделить 5 гигов даже теоретически, а для х64 - можно. Вот я о чем.
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / работа с большими объёмами памяти
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]