Article View: be.comp.programming
Article #10778Re: new operator faalt
From: Arnold Hendriks
Date: Mon, 25 Feb 2002 20:59
Date: Mon, 25 Feb 2002 20:59
54 lines
3852 bytes
3852 bytes
Armin Gerritsen <armin.gerritsen.DELETE@philips.com> wrote: > "Johan Wevers" <johanw@iae.nl> wrote in message > news:3C7A5882.3B898C88@iae.nl... >> > Mijn vraag is dus eigenlijk waarom faalt een new-operator? Documentatie > zegt >> > bijvoorbeeld als er niet genoeg geheugen vrij is. Maar 300MB lijkt me > toch >> > genoeg voor 14kB? :-) >> >> > Iemand enig idee? Kijk in NT ook eens naar de 'VM size' kolom in de task manager, wat die aangeeft voordat de allocatie mislukt. Als er zoveel fragmentatie is moet de VM size flink opgelopen zijn. > - Ik kan mijn programma omschrijven dat ik aan het begin 'worst-case' > allocaties doe en die buffers herbruik. Nadeel is echter wel dat ik niet met > 100% zekerheid kan zeggen wat 'worst-case' is (maar wel wat het nooit zal > zijn) en dus onnodig groot moet zitten in mijn algorithmes. Ook is er een > verschil tussen 'worst-case' en gangbaar. M.a.w. mijn app gaat flink > geheugen verspillen. Is een optie als niets anders kan, maar liever een > andere proberen. :-) Doe je veel grote of kleine allocaties? Enig idee wat ongeveer je patroon is? Er bestaan alternatieve memory allocators die soms eenvoudig in te pluggen zijn, waarbij je de allocatiestrategie kunt aanpassen. Je kunt ook memory pools gebruiken voor verschillende allocatie soorten, waarmee je fragmentatie enigszins kunt tegengaan. Als je bv veel allocaties van 32 bytes achter elkaar doet en die later vaak weer in 1 klap tezamen vrijgeeft, zou je bv een paar grote buffers van 2MB ofzo aan kunnen leggen, en daarbinnen zelf eenvoudig geheugenbeheer doen. Wanneer je ze niet meer nodig hebt, geef je in een klap de grote buffers vrij en verminder je fragmentatie van de heap zelf. Je kunt de fragmentatie zelfs geheel voorkomen door die bv 2 MB buffers niet van de heap te halen, maar via (anonymous) memory mappings. Maar een en ander hangt heel erg af van je allocatiepatronen, er zijn al vele artikelen over geschreven. In mijn ervaring kunnen bufferpools enorm schelen, zeker als er grote en kleine allocaties elkaar vaak afwisselen. > - heap 'defragmenteren'. Zo ja hoe? Lukt niet met standaard new/delete > - heap vergroten? Zo ja hoe? Dat zou automatisch moeten gebeuren totdat je applicatie de VM limiet heeft bereikt (die wel ergens rond de gig zal liggen ofzo bij NT). Kijk eens naar de VM size in de task manager om te zien hoe ver je al bent. > - Iets anders? Misschien heb je iets aan memory mappings voor een deel van de allocaties, want die kun je vrijgeven en alloceren zonder de heap zelf te fragmenteren. -- Arnold Hendriks <a.hendriks@b-lex.com> B-Lex Information Technologies, http://www.b-lex.com/
Technical Details
Message-ID:
<a5e8ji$8ka$1@news.btcnet.nl>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!feedme.news.mediaways.net!news.mailgate.org!fr.clara.net!heighliner.fr.clara.net!oleane.net!oleane!bnewspeer00.bru.ops.eu.uu.net!emea.uu.net!news.btcnet.nl!not-for-mailReferences:
<a5dl0m$6cu90$1@ID-65051.news.dfncis.de> <3C7A5882.3B898C88@iae.nl> <a5dvl8$6h8eb$1@ID-65051.news.dfncis.de>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: 107324,3fd870920848f7cb
X-Google-Attributes: gid107324,public
X-Google-Thread: fcea4,3fd870920848f7cb
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-02-25 13:00:23 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!feedme.news.mediaways.net!news.mailgate.org!fr.clara.net!heighliner.fr.clara.net!oleane.net!oleane!bnewspeer00.bru.ops.eu.uu.net!emea.uu.net!news.btcnet.nl!not-for-mail
From: Arnold Hendriks <a.hendriks@b-lex.com>
Newsgroups: be.comp.programming,nl.comp.programmeren
Subject: Re: new operator faalt
Date: 25 Feb 2002 20:59:30 GMT
Organization: Echelon bv/BTCnet internet services
Lines: 54
Message-ID: <a5e8ji$8ka$1@news.btcnet.nl>
References: <a5dl0m$6cu90$1@ID-65051.news.dfncis.de> <3C7A5882.3B898C88@iae.nl> <a5dvl8$6h8eb$1@ID-65051.news.dfncis.de>
NNTP-Posting-Host: ns.b-lex.com
X-Trace: news.btcnet.nl 1014670770 8842 217.119.224.163 (25 Feb 2002 20:59:30 GMT)
X-Complaints-To: abuse@echelon.nl
NNTP-Posting-Date: 25 Feb 2002 20:59:30 GMT
User-Agent: tin/1.4.2-20000205 ("Possession") (UNIX) (Linux/2.4.7-10 (i586))