Текущий архив: 2011.05.22;
Скачать: CL | DM;
Вниз
как обойти ограничение в 2 Гб. для стримов? Найти похожие ветки
← →
Scott Storch (2011-02-15 11:51) [0]приложение загружает файлы статистики по интернет-магазинам. если загружается слишком большой файл (> 2 Гб.) - сыпется стрим. что посоветуете?
← →
clickmaker © (2011-02-15 11:52) [1]какой стрим? TFileStream? и что значит "сыпется"?
← →
oldman © (2011-02-15 11:53) [2]Загружать кусками
← →
Scott Storch (2011-02-15 12:01) [3]
> какой стрим?
TMemoryStream
> что значит "сыпется"?
когда TMemoryStream.Size > 2 Гб. - сообщение out of memory
← →
Стрим (2011-02-15 12:02) [4]2 Гб - ограничение на доступное адресное пространство процесса для 32-битных ОС MS Windows XP, Vista...
То есть, если ты TMemoryStream использовал, то, значит, неправильно использовал, потому что он больше 2 ГБайт не сможет хранить.
TFileStream тут не при чем, он внутри как 32-битный, так и 64-битный. То есть, 2 ГБайта для него - не предел. То есть, если ты использовал где-то в своей программе integer для работы с потоком, то это и твоя ошибка.
Так что грузи не весь файл статистики, а разбирай его по записям, последовательно. При правильной реализации, проблем с памятью не будет. Никогда.
P.S. Сообщение об ошибке: "Ахтунг! Стрим рассыпался!"...
← →
oldman © (2011-02-15 12:04) [5]Что же это за статистика такая, больше 2-х гиг?
← →
clickmaker © (2011-02-15 12:05) [6]> [3] Scott Storch (15.02.11 12:01)
рекомендую глянуть в сторону memory-mapped files
← →
Стрим (2011-02-15 12:13) [7]>out of memory
Это переводится не как "стрим рассыпался", а как "нету памяти".
Если тебя интересует именно обзод ограничения в 2 ГБайта, то надо писать 64-разрядный софт под 64-разрядные ОС, для чего воспользоваться 64-разрядным компилятором. Delphi такого не умеет. Хотя, говорят, что, возможно, в некоем обозримом будущем, таки научится. Но, если честно, то лучше не ждать выхода 64-разрядного компилятора Delphi, а переписать программу, реализовав последовательный анализ по записям. Потому что программа анализа статистики, пожирающая ОЗУ в объемах, равных размеру файла статистики - не программа, а монстр какой-то. Тебе так никакой ОС не хватит. Ни 32-разрядной, ни 64-разрядной, ни 128...
Представь себе человека, который вначале бессознательно зазубривает наизусть весь роман "Войну и Мир", а потом закрывает глаза, и, вспоминая зазубренное, начинает проникаться атмосферой произведения и гением автора. Тупо? Твоя программа именно так и делает.
← →
Palladin © (2011-02-15 12:22) [8]вас бы обратно в дос, мигом экономить научились бы... беспредельщики )
← →
brother © (2011-02-15 12:26) [9]во времена дос и железо скромнее было;) а сейчас - уже можно ;)
← →
oldman © (2011-02-15 13:30) [10]
> brother © (15.02.11 12:26) [9]
Во времена дос таких файлов не было :)))
← →
Германн © (2011-02-15 13:48) [11]
> Во времена дос таких файлов не было
Во времена дос таких дисков даже не было, не то что файлов! )))
← →
Dimka Maslov © (2011-02-15 15:00) [12]
> вас бы обратно в дос, мигом экономить научились бы... беспредельщики
> )
Кто видел ссылку на рассказ про один байт?
← →
clickmaker © (2011-02-15 15:11) [13]http://www.wasm.ru/article.php?article=onebyte
← →
KSergey © (2011-02-15 17:22) [14]> clickmaker © (15.02.11 15:11) [13]
Ахинея.
← →
Jeer © (2011-02-15 17:58) [15]
> clickmaker © (15.02.11 15:11) [13]
Заворот мозга у автора.
← →
Anatoly Podgoretsky © (2011-02-15 19:24) [16]
> TMemoryStream
И тебя не смущает слово Memory?
В 32 битной программи Memory не может быть более 2 гб, если не считать некоторых экзотических случаев.
← →
KilkennyCat © (2011-02-15 19:54) [17]не то чтоб ахинея или заворот мозга, просто бессмыслица. любой может так пожаловаться. особенно если не своим делом занимается или начинает сравнивать с другими областями.
← →
имя (2011-02-15 22:38) [18]Удалено модератором
← →
Вариант (2011-02-16 09:09) [19]
> clickmaker © (15.02.11 15:11) [13]
Понравилось:-)
Страницы: 1 вся ветка
Текущий архив: 2011.05.22;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.008 c