Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
06-01-2006 10:54
Попробуй H:=GlobalAlloc(GMEM_FIXED,1024*1024*1024);Sleep(100);GlobalFree(H);. Это отъест у тебя 1 Гб памяти, но тут же освободит. Я не гарантирую, что это поможен, просто попробуй.
Хм. У меня есть MSSQL сервер 7.0/2000 ... после больших запросов (куча сложенных подзапросов или SELECT .. INTO #VT_1) он отъедает опративки по 400-1500 (на сервере с 2 гигами) мегабайт.
На сайте Microsoft написано что он отдаст её операционке по первому требованию. Однако при этом сам тормозит ужасно. Данные дофетчиваются полностью, соединений нет активных, а он всё равно память не отдаёт. На серверах с памятью до 1 гига, всё работает отлично, а вот на сервере с 2 гигами памяти у меня выходит Out Of Memory. Я хочу как то сказать менеджеру памяти что мне нужно занять 2 гига оперативки ... вот для чего это мне.
А FreeMem Turbo/Pro мне не катит, так как MSSQL сервер сам держит память и она не потерянная :(
Подскажите что делать пожалуйста
Во первых, чему равно N, иначе вопрос теряет смысл, так как при очень большом N, Out Of Memory выскочит полюбому.
Во вторых, "сожрать всю память" и "сожрать всю память непрерывным куском" (как делаете вы) это очень разные вещи.
Ну и в третьих, зачем вы так издеваетесь над бедным борландовским менеджером памяти, он не расчитан на такие эксперименты. Что вам на самом деле надо в итоге получить?
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.