{"id":28253,"date":"2007-01-26T10:00:03","date_gmt":"2007-01-26T10:00:03","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/2007\/01\/26\/the-maxmem-switch-doesnt-set-the-maximum-amount-of-memory-windows-will-use\/"},"modified":"2007-01-26T10:00:03","modified_gmt":"2007-01-26T10:00:03","slug":"the-maxmem-switch-doesnt-set-the-maximum-amount-of-memory-windows-will-use","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20070126-03\/?p=28253","title":{"rendered":"The \/MAXMEM switch doesn&#039;t set the maximum amount of memory Windows will use"},"content":{"rendered":"<p>The Windows <code>boot.ini<\/code> file has a <code>\/MAXMEM<\/code> switch whose name would lead you to believe that it sets the maximum amount of memory that Windows will use. But that&#8217;s not what it does; the name is misleading.\n What the <code>\/MAXMEM<\/code> flag really does is set the maximum physical address that Windows will scan in search of RAM. If your physical memory map contains discontiguous chunks of RAM, such as the one at the 3.5GB boundary <a href=\"http:\/\/blogs.msdn.com\/oldnewthing\/archive\/2006\/08\/14\/699521.aspx\"> in the sample diagram I drew a few months ago<\/a>, then the amount of RAM Windows finds will be less than the <code>\/MAXMEM<\/code> value you specified. For example, if there were a gap between 128MB and 256MB (said gap used by some hardware device, say), then setting \/MAXMEM to 512MB would only give you 384MB of RAM. You lost 128MB of physical address space to the gap.<\/p>\n<p> What&#8217;s more, <a href=\"http:\/\/support.microsoft.com\/kb\/108393\/\"> Knowledge Base article Q108393<\/a> says <\/p>\n<blockquote class=\"q\"><p> Microsoft has not committed to keeping the switch in any future releases of Windows. <\/p><\/blockquote>\n<p> In fact, Windows&nbsp;Vista carries through that threat. The <code>\/MAXMEM<\/code> switch has no effect in Windows&nbsp;Vista. To try to avoid the confusion surrounding the meaning of <code>MAXMEM<\/code>, the kernel folks changed its name to <code>TRUNCATEMEMORY<\/code>. (It also specifies the physical address limit in bytes rather than megabytes.) I&#8217;m not sure the name change will really help much to dispel the confusion, though, since it still says &#8220;memory&#8221;. I think they should&#8217;ve called it something like <code>MAXPHYSADDR<\/code>. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Windows boot.ini file has a \/MAXMEM switch whose name would lead you to believe that it sets the maximum amount of memory that Windows will use. But that&#8217;s not what it does; the name is misleading. What the \/MAXMEM flag really does is set the maximum physical address that Windows will scan in search [&hellip;]<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[26],"class_list":["post-28253","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-other"],"acf":[],"blog_post_summary":"<p>The Windows boot.ini file has a \/MAXMEM switch whose name would lead you to believe that it sets the maximum amount of memory that Windows will use. But that&#8217;s not what it does; the name is misleading. What the \/MAXMEM flag really does is set the maximum physical address that Windows will scan in search [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/28253","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=28253"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/28253\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=28253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=28253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=28253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}