<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2112644</guid>
        <pubDate>Tue, 11 Nov 2008 14:46:13 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2112644</link>
        <description><![CDATA[zhuravlev: Спасибо ОГРОМНОЕ Всем помогли разобраться&#33;&#33;&#33;&#33;&#33;]]></description>
        <author>zhuravlev</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2102672</guid>
        <pubDate>Wed, 29 Oct 2008 18:50:09 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2102672</link>
        <description><![CDATA[jack128: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2102600'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ahilles &#064; <time class="tag-quote__quoted-time" datetime="2008-10-29T17:09:03+00:00">29.10.08, 17:09</time></span><div class='quote '>ты может ошибся? </div></div><br>
хе, да ошибся. Точнее по Рихтеру так было в win9x системах, а на nt - ты прав.]]></description>
        <author>jack128</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2102600</guid>
        <pubDate>Wed, 29 Oct 2008 17:09:03 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2102600</link>
        <description><![CDATA[Ahilles: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2102589'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>jack128 &#064; <time class="tag-quote__quoted-time" datetime="2008-10-29T16:49:44+00:00">29.10.08, 16:49</time></span><div class='quote '>они как раз в верхних 2 гигах сидят.</div></div><br>
так спокойно, спокойно. ты может ошибся? Если они сидят в верхних двух гигах, а к верхним двум гигам запрещён доступ то как мы можем вызывать фунции этих библиотек? kernel32.dll сидит по адресу 7C800000h, а ntdll.dll 7C900000h. (XP SP2) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2008-10-29T17:15:15+00:00">29.10.08, 17:15</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2102589'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>jack128 &#064; <time class="tag-quote__quoted-time" datetime="2008-10-29T16:49:44+00:00">29.10.08, 16:49</time></span><div class='quote '>ПОэтому и маскимум - 2 гига, а не 4.</div></div><br>
максимум для одного Win32  приложения - это чуть меньше двух гигов (без использования AWE). И притом НЕ одним куском]]></description>
        <author>Ahilles</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2102589</guid>
        <pubDate>Wed, 29 Oct 2008 16:49:44 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2102589</link>
        <description><![CDATA[jack128: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2101599'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ahilles &#064; <time class="tag-quote__quoted-time" datetime="2008-10-28T16:11:29+00:00">28.10.08, 16:11</time></span><div class='quote '>под ntdll.dll, kernel32.dll. </div></div><br>
они как раз в верхних 2 гигах сидят. ПОэтому и маскимум - 2 гига, а не 4.]]></description>
        <author>jack128</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2101599</guid>
        <pubDate>Tue, 28 Oct 2008 16:11:29 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2101599</link>
        <description><![CDATA[Ahilles: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2101534'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Mr.Delphist &#064; <time class="tag-quote__quoted-time" datetime="2008-10-28T14:43:45+00:00">28.10.08, 14:43</time></span><div class='quote '>Если память не изменяет, то теоретический предел - это непрерывный блок в 2 гига в рамках Win32-архитектуры (даже при включенном PAE).</div></div><br>
ну да. Проге доступно младшие 2 гига памяти. но надо помнить что память от 0 до 0FFFFh не используется, а это уже минус 64 килобайта и уже 2 гига выделить невозможно&#33; Это не считая память под саму прогу и под ntdll.dll, kernel32.dll.]]></description>
        <author>Ahilles</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2101534</guid>
        <pubDate>Tue, 28 Oct 2008 14:43:45 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2101534</link>
        <description><![CDATA[Mr.Delphist: Есть ограничения, есть. <br>Главное из них - отсутствие гарантий, чтобы выделить НЕПРЕРЫВНЫЙ кусок памяти большого размера в рамках одного процесса. Т.е. выделить 100 кусков по 10 мегов можно относительно легко, 10 кусков по 100 мегов - уже сложнее. А 1 кусок в 1000 мегов - практически нереально, на &quot;классическом сферическом PC в вакууме&quot;.<br><br>Если память не изменяет, то теоретический предел - это непрерывный блок в 2 гига в рамках Win32-архитектуры (даже при включенном PAE).]]></description>
        <author>Mr.Delphist</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2095186</guid>
        <pubDate>Mon, 20 Oct 2008 14:21:56 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2095186</link>
        <description><![CDATA[Ahilles: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2095132'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>leo &#064; <time class="tag-quote__quoted-time" datetime="2008-10-20T13:26:27+00:00">20.10.08, 13:26</time></span><div class='quote '>классический борландовский менеджер работает в 2-3 раза быстрее виндового в однопоточных приложениях без ShareMem, а FastMM даже с ShareMem вдвое быстрее, а без до 6-7 раз (см.тестовый код и примерные цифры)</div></div><br>
я так и думал. именно это мне и нужно было. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2008-10-20T14:51:39+00:00">20.10.08, 14:51</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094774'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>CodeMonkey &#064; <time class="tag-quote__quoted-time" datetime="2008-10-20T07:03:18+00:00">20.10.08, 07:03</time></span><div class='quote '>т.к. это неверно.</div></div><br>
да, я был не прав. У меня PAE ядро и 1 гиг памяти, у меня получилось 6 раз (в разных приложениях) выделить 900 метров памяти, в результате чего суммарный размер всех файлов подкачки был примерно 5,5 ГБ. Кстати, в одном приложении у меня так и не получилось выделить 1000 мегабайт памяти, пришлось запустить 6 копий  и выделить в каждой по 900 метров (программы представляли собой форму с одной кнопкой). Всё таки какие-то ограничения есть...]]></description>
        <author>Ahilles</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2095132</guid>
        <pubDate>Mon, 20 Oct 2008 13:26:27 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2095132</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094758'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ahilles &#064; <time class="tag-quote__quoted-time" datetime="2008-10-20T06:44:30+00:00">20.10.08, 06:44</time></span><div class='quote '>А по поводу менеджера куч Delphi, то там разработчики сделали так: в начале выделяется большой кусок памяти под кучу, и функции GetMem и SetLength это аналоги функции HeapAlloc, т.е. выделяют память вручную из кучи. Не понимаю зачем они так сделали когда можно воспользоваться теми функциями, которые предоставляет сама система</div></div><br>
Во-первых, &quot;так делают&quot; любые менеджеры кучи, в т.ч. и виндовые HeapAlloc&#092;HeapFree. Во-вторых, АПИ содержит немало функций, которые по большому счету не являются системными (например, функции работы со строками) и приложение может по своему усмотрению использовать их или нет. В частности борландовский менеджер специально заточен на быстрое выделение и уничтожение небольших блоков памяти под строки и экземпляры VCL-объектов - классический борландовский менеджер работает в 2-3 раза быстрее виндового в однопоточных приложениях без ShareMem, а FastMM даже с ShareMem вдвое быстрее, а без до 6-7 раз (см.<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=196607&st=30&#entry1648856' target='_blank'>тестовый код и примерные цифры</a>)]]></description>
        <author>leo</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094774</guid>
        <pubDate>Mon, 20 Oct 2008 07:03:18 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094774</link>
        <description><![CDATA[CodeMonkey: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094758'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ahilles &#064; <time class="tag-quote__quoted-time" datetime="2008-10-20T06:44:30+00:00">20.10.08, 06:44</time></span><div class='quote '>А как ты объяснишь что гранулярность у них 8 байт, в то время как у VirtualAlloc 64КБ?</div></div><br>
Да нет, это понятно. В смысле: понятно, чем VirtualAlloc отличается от менеджера памяти Delphi. <br>
Я про то, что нет разницы где брать память. Важно - как её использовать.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094758'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ahilles &#064; <time class="tag-quote__quoted-time" datetime="2008-10-20T06:44:30+00:00">20.10.08, 06:44</time></span><div class='quote '>нет, но суммарная виртуальная память это только pagefile</div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094758'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ahilles &#064; <time class="tag-quote__quoted-time" datetime="2008-10-20T06:44:30+00:00">20.10.08, 06:44</time></span><div class='quote '>нет, это уже ругая история</div></div><br>
Это всё тоже понятно. Я это к тому, что не стоит говорить <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094320'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ahilles &#064; <time class="tag-quote__quoted-time" datetime="2008-10-19T13:23:54+00:00">19.10.08, 13:23</time></span><div class='quote '>объём памяти выделенный всеми процессами в сумме, не должен превышать 4 ГБ</div></div>, т.к. это неверно.]]></description>
        <author>CodeMonkey</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094758</guid>
        <pubDate>Mon, 20 Oct 2008 06:44:30 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094758</link>
        <description><![CDATA[Ahilles: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094320'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ahilles &#064; <time class="tag-quote__quoted-time" datetime="2008-10-19T13:23:54+00:00">19.10.08, 13:23</time></span><div class='quote '>объём памяти выделенный всеми процессами в сумме, не должен превышать 4 ГБ (т.е. чтобы размер файла подкачки не превышал 4 ГБ).</div></div><br>
да, да, да забыл. это ещё не считая промэпированную память. но там ещё есть ограничения.... в книге Руссиновича и Соломна всё подробно об этом написано, не помню точно.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094459'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>CodeMonkey &#064; <time class="tag-quote__quoted-time" datetime="2008-10-19T16:54:07+00:00">19.10.08, 16:54</time></span><div class='quote '>Для начала - суммарная виртуальная память это всё же RAM + pagefile, а не просто pagefile</div></div><br>
нет, но суммарная виртуальная память это <strong class='tag-b'>только</strong> pagefile, потому что &quot;а вдруг придётся выгрузить всю память в своп&quot;, хотя в режиме ядра есть ещё и невыгружаемая память. Вернее даже если физической памяти хватает, файл подкачки всё равно будет занимать место, но при этом он не будет использоваться. Например, у меня XP 1 Гиг памяти, её хватате и избытком, всё приложения сейчас в сумме расходуют примерно 400 метров, но файл подкачки имеет размер 512 метром, но при этом почти не используется (в настройках файл подкачки 512-2048). И когда гооврят что файл подкачки должен иметь размер <strong class='tag-b'>не меньше, чем размер физической памяти</strong>, исходят из утверждения &quot;а вдруг придётся выгрузить всю память в своп&quot;. опять же, в книге Руссиновича и Соломна всё подробно об этом написано, не помню точно. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094459'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>CodeMonkey &#064; <time class="tag-quote__quoted-time" datetime="2008-10-19T16:54:07+00:00">19.10.08, 16:54</time></span><div class='quote '>Чем это отличается от GetMem(P, 700*1024*1024); или SetLength<br>
(S, 700*1024*1024)? Проблема с фрагментацией как была, так и осталась.</div></div><br>
А как ты объяснишь что гранулярность у них 8 байт, в то время как у VirtualAlloc 64КБ?  Функции GetMem и SetLength работают с кучей а не с виртуальнйо памятью, и они вызывают функции <strong class='tag-b'>HeapAlloc</strong>.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094459'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>CodeMonkey &#064; <time class="tag-quote__quoted-time" datetime="2008-10-19T16:54:07+00:00">19.10.08, 16:54</time></span><div class='quote '>Кроме того, в конце-концов есть же AWE.</div></div><br>
нет, это уже другая история, и толк от AWE есть только тогда когда ядро винды PAE и размер физической памяти больше чем размер виртуальной памяти, т.е. когда физическая память больше чем 2 ГБ.<br>
<br>
А по поводу менеджера куч Delphi, то там разработчики сделали так: в начале выделяется большой кусок памяти под кучу, и функции GetMem и SetLength это аналоги функции HeapAlloc, т.е. выделяют память вручную из кучи. Не понимаю зачем они так сделали когда можно воспользоваться теми функциями, которые предоставляет сама система.]]></description>
        <author>Ahilles</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094697</guid>
        <pubDate>Mon, 20 Oct 2008 05:30:37 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094697</link>
        <description><![CDATA[andriano: <strong class='tag-b'>CodeMonkey</strong>, спасибо за объяснение. Искренне надеюсь, что оно чем-то поможет <strong class='tag-b'>zhuravlev</strong>, создавшему эту тему.<br>
Что же касается моего вопроса, то сформулированная Вами проблема никак не связана с тем вопросом, что задал <strong class='tag-b'>zhuravlev</strong> (о чем Вы, собственно, и пишите в 4 абзаце).<br>
Собственно, фрагментация возникает из-за частых и бездумных запросов к менеджеру памяти, с чем последний, даже самый совершенный, справиться, естественно, не может. Поэтому бороться следует не с симптомами, а с самой болезнью, - т.е. осмыслить политику запросов и освобождения памяти в собственной программе.]]></description>
        <author>andriano</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094553</guid>
        <pubDate>Sun, 19 Oct 2008 18:52:40 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094553</link>
        <description><![CDATA[CodeMonkey: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094538'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>andriano &#064; <time class="tag-quote__quoted-time" datetime="2008-10-19T18:35:22+00:00">19.10.08, 18:35</time></span><div class='quote '>А что, собственно, за проблемы с фрагментацией?</div></div><br>
Речь идёт не о фрагментации физической памяти, а о фрагментации адресного пространства процесса.<br>
Представьте, что вы выделили 2 гига памяти кусками по 1 Mb. Теперь вы освобождаете каждый нечётный кусок. Получается, что вы освободили 1 Gb памяти, и занято у вас тоже 1 Gb (т.е. 50/50). Причём карта памяти похожа на решето - куски занятой памяти равномерно перемешаны с кусками свободной памяти. А теперь вы хотите выделить 2 Mb памяти. Несмотря на то, что суммарно у вас ещё есть целый 1 Gb свободной памяти, вы не можете это сделать, т.к. максимальный размер непрерывного свободного участка у вас = 1 Mb. Зато у вас 1024 таких участка :)<br>
Это и есть фрагментация. Суть её в том, что из-за интернисвного цикла выделения/освобождения памяти адресное пространство процесса всё больше начинает напоминать решето. Именно по этой причине практически невозможно использовать в программе максимум памяти, доступной режиму пользователя - всегда будут зазоры.<br>
При этом нет разницы, выделяет ли вам память ОС, менеджер памяти или вы выделяете их из зарезервированного участка памяти, как это хочет сделать автор вопроса.<br>
Разница может быть только в <em class='tag-i'>алгоритме</em> выделения. Не имеет значения место выделения. Имеет значение как, в какой последовательности вы работаете с памятью. <br>
Например, в отличие от менеджера памяти старых Delphi, менеджер памяти в новых Delphi (FastMM) группирует данные по размеру: мелкие - с мелкими, средние - со средними, а для крупных он вообще вроде запрашивает у ОС отдельные блоки памяти. Это способствует уменьшению фрагментации памяти. Другой пример - нет необходимости выделять память под каждый из кучи однотипных объектов. Лучше загнать их в массив. Ещё пример? Что ж, например, в XP и выше есть <a class='tag-url' href='http://msdn.microsoft.com/en-us/library/aa366750(VS.85).aspx' target='_blank'>куча с низкой фрагментацией</a>. Потом. В нашем же примере - если бы мы заранее сперва выделили память для всех чётных кусков, а затем - для нечётных, то после освобождения памяти у нас получилось бы начало адресного пространства - один целый блок занятой памяти в 1 Gb, а вторая половина - один свободный блок памяти в 1 Gb. Т.е. 0% фрагментации.]]></description>
        <author>CodeMonkey</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094538</guid>
        <pubDate>Sun, 19 Oct 2008 18:35:22 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094538</link>
        <description><![CDATA[andriano: А что, собственно, за проблемы с фрагментацией?<br>Если мы работаем в защищенном режиме, то мы всегда работатем через таблицу страниц и процессор на аппаратном уровне производит трансляцию адресов, поэтому на уровне прикладной задачи память непрерывна, а если физически она расположена в разных частях, то на скорости доступа это никак не сказывается.<br>Если же мы работаем в реальном режиме... А что, кто-то еще работает в реальном режиме?]]></description>
        <author>andriano</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094459</guid>
        <pubDate>Sun, 19 Oct 2008 16:54:07 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094459</link>
        <description><![CDATA[CodeMonkey: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094320'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ahilles &#064; <time class="tag-quote__quoted-time" datetime="2008-10-19T13:23:54+00:00">19.10.08, 13:23</time></span><div class='quote '>Не помню точно какие, но одно точно помню (в Win32) : объём памяти выделенный всеми процессами в сумме, не должен превышать 4 ГБ (т.е. чтобы размер файла подкачки не превышал 4 ГБ).</div></div><br>
С чего вы это взяли? Нет таких ограничений. Для начала - суммарная виртуальная память это всё же RAM + pagefile, а не просто pagefile. Кроме того, в конце-концов есть же <a class='tag-url' href='http://msdn.microsoft.com/en-us/library/aa366527(VS.85).aspx' target='_blank'>AWE</a>. Или вы про <a class='tag-url' href='http://support.microsoft.com/kb/237740' target='_blank'>это</a>?<br>
Кстати, при желании можно и в обычном пользовательском режиме 3Gb использовать: <a class='tag-url' href='http://blogs.msdn.com/oldnewthing/archive/2004/08/22/218527.aspx' target='_blank'>Summary of the recent spate of /3GB articles</a>.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094320'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ahilles &#064; <time class="tag-quote__quoted-time" datetime="2008-10-19T13:23:54+00:00">19.10.08, 13:23</time></span><div class='quote '>Просто выделяем виртуальную память через функцию VirtualAlloс</div></div><br>
Чем это отличается от GetMem(P, 700*1024*1024); или SetLength(S, 700*1024*1024)? Проблема с фрагментацией как была, так и осталась.]]></description>
        <author>CodeMonkey</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094401</guid>
        <pubDate>Sun, 19 Oct 2008 15:55:38 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094401</link>
        <description><![CDATA[zhuravlev: <strong class='tag-b'>Ahilles</strong><br>
Пасиб .... попробую&#33;&#33;&#33;&#33;]]></description>
        <author>zhuravlev</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094320</guid>
        <pubDate>Sun, 19 Oct 2008 13:23:54 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094320</link>
        <description><![CDATA[Ahilles: Зачем нам куча? Просто выделяем виртуальную память через функцию VirtualAlloс. Гранулярность 64 КБ. Никакой фрагментации и другого бреда ..... :) <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">procedure TForm1.Button1Click(Sender: TObject);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;P:pointer;</div><div class="code_line">&nbsp;&nbsp;size:DWORD;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Size:=700*1024*1024; &nbsp;//700 метров</div><div class="code_line">&nbsp;&nbsp;p:=VirtualAlloc(0,size,MEM_COMMIT+MEM_RESERVE,PAGE_READWRITE);</div><div class="code_line">&nbsp;&nbsp;if p=nil then showmessage(&#39;ERROR&#39;);</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
вот только зачем это?<br>
<br>
Можно выделить до 2 ГБ памяти, но только есть ограничения. Не помню точно какие, но одно точно помню (в Win32) : объём памяти выделенный <strong class='tag-b'>всеми</strong> процессами в <strong class='tag-b'>сумме</strong>, не должен превышать 4 ГБ (т.е. чтобы размер файла подкачки не превышал 4 ГБ).]]></description>
        <author>Ahilles</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094133</guid>
        <pubDate>Sun, 19 Oct 2008 05:50:45 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094133</link>
        <description><![CDATA[CodeMonkey: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094108'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zhuravlev &#064; <time class="tag-quote__quoted-time" datetime="2008-10-18T23:27:03+00:00">18.10.08, 23:27</time></span><div class='quote '>а када сама берет то происходит фрагментация кучи</div></div><br>
Ок, для работы программа берёт память:<br>
1). Выделяется менеджером памяти (из кучи).<br>
2). Как-то выделяется руками из заранее подготовленного участка.<br>
<br>
Я не вижу разницы между этими двумя случаями. Какое-такое принципиальное отличие во втором случае, что вы прямо уверены, что там не будет фрагментации?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094108'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zhuravlev &#064; <time class="tag-quote__quoted-time" datetime="2008-10-18T23:27:03+00:00">18.10.08, 23:27</time></span><div class='quote '>большом количестве из кучи.....</div></div><br>
Большом количестве чего? Здесь нет телепатов.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=253509&view=findpost&p=2094108'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zhuravlev &#064; <time class="tag-quote__quoted-time" datetime="2008-10-18T23:27:03+00:00">18.10.08, 23:27</time></span><div class='quote '>и на фрагментацию время не уходит, проверил&#33;&#33;&#33;&#33;&#33;&#33;&#33;</div></div><br>
Ну-ка, поделитесь с общественностью, как это вы проверили?]]></description>
        <author>CodeMonkey</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094108</guid>
        <pubDate>Sat, 18 Oct 2008 23:27:03 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094108</link>
        <description><![CDATA[zhuravlev: речь идетъ о большом количестве из кучи..... а када сама берет то происходит фрагментация кучи..... а это еще + время&#33;&#33;&#33;&#33;&#33; а нада сразу ... и на фрагментацию время не уходит, проверил&#33;&#33;&#33;&#33;&#33;&#33;&#33;]]></description>
        <author>zhuravlev</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094021</guid>
        <pubDate>Sat, 18 Oct 2008 18:35:54 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2094021</link>
        <description><![CDATA[Санчес: Смущает фраза &quot;чтобы они были зарезервированы только для неё&quot;. Речь идёт о физической памяти? А если столько нету?]]></description>
        <author>Санчес</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2093991</guid>
        <pubDate>Sat, 18 Oct 2008 17:38:29 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2093991</link>
        <description><![CDATA[CodeMonkey: Зачем?<br>В процессе работы она что, сама не может брать, сколько захочет?]]></description>
        <author>CodeMonkey</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2093935</guid>
        <pubDate>Sat, 18 Oct 2008 15:42:19 +0000</pubDate>
        <title>как при запуке проги выделить 1гиг памяти?</title>
        <link>https://forum.sources.ru/index.php?showtopic=253509&amp;view=findpost&amp;p=2093935</link>
        <description><![CDATA[zhuravlev: Люди, подскажите плиз&#33;&#33;&#33;&#33;<br><br>Както можно при старте программы выделить 1гиг памяти под разные процедуры, чтобы они были зарезервированы только для нее....?<br>Ну и конечно потом их освободить....<br><br>Спасибки&#33;]]></description>
        <author>zhuravlev</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      </channel>
      </rss>
	