From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,f479f3331eef5353 X-Google-Attributes: gid103376,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news1.google.com!news2.google.com!news.glorb.com!wn14feed!worldnet.att.net!bgtnsc04-news.ops.worldnet.att.net.POSTED!53ab2750!not-for-mail Newsgroups: comp.lang.ada From: anon@anon.org (anon) Subject: Extra footnote: Re: Size of Vector limited to 1024 MB of Heap Size Reply-To: anon@anon.org (anon) References: X-Newsreader: IBM NewsReader/2 2.0 Message-ID: Date: Tue, 24 Jun 2008 23:36:11 GMT NNTP-Posting-Host: 12.65.192.196 X-Complaints-To: abuse@worldnet.att.net X-Trace: bgtnsc04-news.ops.worldnet.att.net 1214350571 12.65.192.196 (Tue, 24 Jun 2008 23:36:11 GMT) NNTP-Posting-Date: Tue, 24 Jun 2008 23:36:11 GMT Organization: AT&T Worldnet Xref: g2news1.google.com comp.lang.ada:861 Date: 2008-06-24T23:36:11+00:00 List-Id: 0 - 1023MB 16-bit works -- 2GB but in Ada: Integers are 4 bytes 0 - 1023MB 32-bit words -- 4GB So: 1024MB 16-bit elements would be (2GB+1 (16-bit words)) but 1024MB 32-bit elements aka 1024MB Integer would be (4GB+1 (32-bit words)) -- STORAGE_ERROR so it seam that you did get the full 4GB RAM memory. But the statement Generic_Vector.Append (Evil_Vector, Integer'Last); will create a vector size of 4GB with each element being 4 bytes giving a total size of 16GB. So, use: Generic_Vector.Append ( Evil_Vector, ( Natural'Last / 4 ) ) ; or better yet Generic_Vector.Append ( Evil_Vector, ( Natural'Last / Natural'Size ) ) ; to give you a 1GB Vector size with an 4 byte element size that uses a total size of 4GB. In , anon@anon.org (anon) writes: >Adjust your heap size in the linking phase. > >In , Dennis Hoppe writes: >>Hi, >> >>my machine has 4 GB of RAM and I am wondering, why I can't use >>at least 2 or 3 GBytes to run an Ada program. It seems, that my >>Ada Compiler (Gnat 4.4.0) limit the memory to 2 GB per default. >>Is it possible to allocate more than 2 GB? >> >>Here is a simple example of an "evil" vector, that gains >>more memory in each pass. The program terminates exactly at >>1024 MB of used Heap memory. >> >> >>with Ada.Containers.Vectors; >> >>procedure Heap is >> package Generic_Vector is new Ada.Containers.Vectors >> (Element_Type => Integer, Index_Type => Natural); >> >> Evil_Vector : Generic_Vector.Vector; >>begin -- Heap >> loop >> Generic_Vector.Append (Evil_Vector, Integer'Last); >> end loop; >>end Heap; >> >> >>heap(6374) malloc: *** mmap(size=2147487744) failed (error code=12) >>*** error: can't allocate region >>*** set a breakpoint in malloc_error_break to debug >> >>raised STORAGE_ERROR : heap exhausted >> >> >>I could not find a suitable Compiler switch or a parameter, that >>can be set for the operating system (linux). "ulimit -v" is already >>set to unlimited. >> >>"gnatmem" reports, that my water mark with 1024 MB is reached, but >>the final water mark is, needless to say, higher. >> >> >>Best regards, >> Dennis Hoppe >