Wetin mek di fɔs C++ (m)alɔkeshɔn na 72 KB ɔltɛm?
Kɔmɛnt dɛn
Mewayz Team
Editorial Team
Di Mistɛri Bihayn Yu Fɔs C++ Alɔkeshɔn
Yu rayt wan simpul C++ program. Wan singl nyu int. Fo bayt. Yu faya op strace ɔ yu fav mɛmori profayl, ɛn na de i de — yu prɔses jɔs aks fɔ roughly 72 KB frɔm di ɔpreshɔn sistɛm. Nɔto 4 bayt. Nɔto 64 bayt. Wan ful 72 KB. If yu dɔn ɛva luk da nɔmba de ɛn de wɔnda if yu tul de lay to yu, nɔto yu wangren de. Dis bihayvya we tan lɛk se na biznɛs na wan pan di kwɛstyɔn dɛn we dɛn kin aks mɔ pan C++ divɛlɔpa dɛn we de dig insay mɛmori intanɛnt fɔ di fɔs tɛm, ɛn di ansa de kɛr wi go pan wan fayn fayn joyn tru di layers we sidɔm bitwin yu kɔd ɛn di aktual hadwae.
Wetin De Apin We Yu Kɔl nyu
Fɔ ɔndastand di 72 KB figa, yu nid fɔ tray di ful alɔkeshɔn chen. We yu C++ kɔd de ɛksɛkutiv nyu int, di kɔmpayla de translet dat to kɔl to ɔpreshɔn nyu, we pan bɔku Linux sistem dɛn de deleget to malloc frɔm glibc. Bɔt malloc nɔ de aks di kɛnal dairekt wan fɔ 4 bayt mɛmori. Di kεnεl de wok insay pej dεm — tipikli 4 KB pan x86_64 — εn di kכst fכ wan sistεm kol na big big rεlatεv to wan simpul mεmכri akses. If yu kɔl brk() ɔ mmap() fɔ ɛvri wan wan alɔkeshɔn go mek ɛni program we nɔ impɔtant fɔ grind to stɔp.
Insted, glibc in mɛmori alɔketa — wan implimɛnt we dɛn kɔl ptmalloc2, insɛf kɔmɔt frɔm Doug Lea in klashik dlmalloc — de akt lɛk midulman. I de aks fɔ big blɔk dɛn fɔ mɛmori frɔm di kɛnal bifo tɛm, dɔn i de kɔt dɛn to smɔl smɔl pat dɛn as yu program nid dɛn. Dis na di men rizin we mek yu fɔs 4-bayt alɔkeshɔn de trig wan bɔku big riŋwe to di ɔpreshɔn sistɛm. Di alɔkatɔ nɔ de west. Na fɔ bi stratejik.
Disecting di 72 KB: Usay di Bayt dɛn Go
Di initial alɔkeshɔn ɔvahɛd kɔmɔt frɔm sɔm difrɛn kɔmpɔnɛnt dɛn we di rɔntaym fɔ initialize bifo i ebul fɔ gi yu ivin wan bayt fɔ yuz mɛmori. We yu ɔndastand ɛni wan pan di kɔmpɔnɛnt dɛn, i de ɛksplen wetin mek di nɔmba de land usay i de land.
Fɔs, glibc in malloc de initialize di men arena — di praymari bukkipin strɔkchɔ we de trak ɔl di alɔkeshɔn dɛn na di men trɛd. Dis arena inklud mɛtadata fɔ di hip, fri-list pɔynta, ɛn bin strɔkchɔ fɔ difrɛn alɔkeshɔn saiz dɛn. Di alɔkatɔ de ɛkstɛnd di program brek tru sbrk(), ɛn di fɔs ɛkstenshɔn de gayd bay wan intanɛnt paramita we dɛn kɔl M_TOP_PAD, we difɔlt to 128 KB fɔ pad. Bɔt, di aktual initial riŋwe de ajɔst fɔ pej alaynɛshɔn ɛn di brek pozishɔn we de naw, we bɔku tɛm kin rilizɔt insay wan smɔl fɔs riŋwe — we kin land nia da 72 KB figa de pan wan prɔses we dɛn jɔs bigin.
Sɛkɛn, bikɔs glibc 2.26, di alɔkatɔ de initialize wan thread-local cache (tcache) we yu yuz am fɔs. Di tcache gɛt 64 bins (wan pan ɛni smɔl-alɔkeshɔn saiz klas), ɛni wan kin ebul fɔ ol 7 kesh chunks. Di tcache_perthread_struct insɛf de kɔnsum arawnd 1 KB, bɔt di akt fɔ initialize am de trig di brayt arena sɛtup. Tɔd, di C++ rɔntaym dɔn ɔlrɛdi du alɔkeshɔn bifo yu main() ivin rɔn — statik kɔnstrɔkta dɛn, iostream bafa initializayshɔn fɔ std::cout ɛn padi dɛn, ɛn lokal sɛtup ɔl de kɔntribyut to da initial hip futprin de.
Di Arena Sistem ɛn Wetin Mek Pri-Alɔkeshɔn Na Smat
Di disishun fɔ pri-alɔkat wan sɔbstanshal chunk pan mɛmori pas fɔ aks am wan wan wan nɔto aksidɛnt fɔ implimɛnt. Na wan deliberate enjinering tradeoff we rut in dikɛd dikɛd sistɛm programin ɛkspiriɛns. Ɛvri kɔl to brk() ɔ mmap() involv kɔntɛks swich frɔm yuz spɛs to kɛnal spɛs, modifyeshɔn fɔ di prɔses in vayrɔyal mɛmori map dɛn, ɛn pɔtɛnɛshɛl pej tebul ɔpdet dɛn. pan mכdan hadwae, wan singl sistεm kol de kכst roughly 100-200 nanoseconds — trivial in isolation, katastrofik at skel.
Tink bɔt wan program we de mek 10,000 smɔl alɔkeshɔn dɛn we dɛn de initialize. If yu nɔ gɛt prɛ-alɔkeshɔn, dat go min 10,000 sistɛm kɔl, we go kɔst lɛk 1-2 milisekɔnd fɔ klin ɔvahɛd. Wit wan arena-based allocator, di fכs alכkeshכn de trigεr wan singl sistεm kol, εn di 9,999 alכkεshכn dεm we de afta dat de sεvis כlsay na yuz spεs tru pכynta aritmεtik εn linked-list כpεreshכn — εvri wan de tek roughly 10-50 nanoseconds. Di mats nɔ gɛt wan dawt: prɛ-alɔkeshɔn win bay ɔda magnitud.
Di 72 KB we yu si pan yu fɔs alɔkeshɔn nɔto west mɛmori — na pefɔmɛns invɛstmɛnt. Di alɔkayshɔn de bet se yu program go mek mɔ alɔkeshɔn jisnɔ, ɛn insay klos to ɛvri rial wɔl sɛnɛriɔ, da bet de pe fayn fayn wan. Di kɔst fɔ di vayrɔyal adrɛs spɛs we dɛn nɔ yuz na essentially ziro pan di mɔdan 64-bit sistem dɛn.
we yu kin yuzVirtual Mɛmori vs. Fizik Mɛmori: Wetin Mek I Nɔ Impɔtant
Wan kɔmɔn tin we de mɔna divɛlɔpman dɛn we mit dis bihayvya fɔ di fɔs tɛm na fɔ west risɔs. If a nid 4 bayt nɔmɔ, wetin mek mi program de yuz 72 KB? di krichכl insayt na dat virtual mεmכri nכto fכshal mεmכri. We glibc ɛkstɛnd di program brek bay 72 KB, di kɛnal de ɔpdet di prɔses in vayrɔyal mɛmori map dɛn, bɔt i nɔ de bak dɛn pej dɛn de wantɛm wantɛm wit fizik RAM. Di aktual fizik pej dɛn de alɔkat pan dimand tru pej fɔlt — na we yu program rayt to wan patikyula adrɛs nɔmɔ di kɛnal de asaynd rial pej fɔ mɛmori to am.
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →Dis min se pan ɔl we yu prɔses in vayrɔyal saiz de go ɔp bay 72 KB, in rɛsidɛnt sɛt saiz (RSS) — di amɔnt fɔ fizik RAM we yu rili yuz — de inkrisayz bay di pej dɛn nɔmɔ we yu rili tɔch. Fɔ wan singl nyu int, dat na tipikli wan 4 KB pej, plus ɛni pej we di arena mɛtadata tek. Di ɔda vayrɔyal spɛs sidɔm de, rɛdi fɔ yuz, i nɔ de kɔst natin pas adrɛs spɛs — we yu gɛt 128 TB pan 64-bit Linux sistɛm.
Dis difrɛns impɔtant we dɛn de profayl ɛn monitar prodakshɔn aplikeshɔn dɛn. If yu de bil sɔftwɛl we nid fɔ trak rial risɔs kɔnsɔmshɔn — ilɛksɛf na SaaS bakɛnd, maykrosavis, ɔ analitiks paip layn lɛk di wan dɛn we de rɔn pan pletfɔm dɛn lɛk Mewayz fɔ biznɛs ɔpreshɔn — yu fɔ ɔltɛm monitar RSS pas vayrɔyal saiz. Tul dɛm lɛk /proc/[pid]/smaps, valgrind --tool=massif, ɛn pmap kin gi yu kɔrɛkt fizik mɛmori futprin pas fɔ mislead vayrɔyal mɛmori figa dɛm.
Aw Difrɛn Alɔkeshɔn dɛn de Handle di Fɔs Alɔkeshɔn
Di 72 KB figa na spɛsifi k to glibc in ptmaloc2. Ɔda alɔkayshɔn dɛn kin mek difrɛn trade-ɔf, ɛn di fɔs alɔkeshɔn ɔvahɛd kin difrɛn akɔdin to dat. Fɔ ɔndastand dɛn difrɛns ya valyu we yu de pik alɔkat fɔ aplikeshɔn dɛn we gɛt fɔ du wit di wok we dɛn de du.
- we dɛn kɔl
- jemalloc (we Facebook, FreeBSD de yuz) — Yuz wan mɔ granular arena strɔkchɔ wit thread-lɔkal kesh dɛm. Di initial ovahed kin te fɔ bi ay (bɔku tɛm 200+ KB) bɔt i kin gi bɛtɛ mɔlti-thrɛd pefɔmɛns bikɔs ɔf di ridyus lɔk kɔntinyuɛns.
- tcmalloc (Google in Thread-Caching Malloc) — I de alɔkat wan fɔ ɛni trɛd kesh we gɛt lɛk 2 MB bay difɔlt, wit agresiv prɛ-alɔkeshɔn. Di fɔs ɔvahɛd kin ay, bɔt di smɔl alɔkeshɔn dɛn we kin apin afta dat kin rili fast.
- musl libc’s malloc — Yuz wan dizayn we simpul pasmak we biys pan mmap fɔ ɔl di alɔkeshɔn dɛn. Fɔs ɔvahɛd na smɔl (bɔku tɛm na jɔs 4 KB fɔ ɛni alɔkeshɔn), bɔt fɔ ɛni alɔkeshɔn kɔst kin ay bikɔs ɔf mɔ frɛkuɛnt sistɛm kɔl.
- mimalloc (Microsoft) — I de yuz sɛgmɛnt-bɛs alɔkeshɔn wit 64 MB sɛgmɛnt dɛn. Di fɔs alɔkeshɔn de trig 64 MB vayrɔyal rizɛvshɔn (wit minimal fizik kɔmitmɛnt), tredin adrɛs spɛs fɔ ɛksɛpshɔn lokaliti ɛn thruput.
Di chuk bitwin dɛn alɔkat ya dipen ɔl pan yu woklɔd. Fɔ lɔng-rɔn sava aplikeshɔn wit ebi ebi malti-thrɛd alɔkeshɔn, jemalloc ɔ tcmalloc tipikli autperfɔm glibc in difɔlt. Fɔ mɛmori-kɔnstrayn ɛmbaded sistɛm, musl in simpul we fɔ du am kin bɛtɛ pan ɔl we i gɛt smɔl thruput. Fɔ mɔs jenɛral-pɔpɔs dɛsktɔp ɛn sava aplikeshɔn, ptmalloc2 in 72 KB initial ɔvahɛd riprizent wan rizin difɔlt we de wok fayn witout tuning.
Tyun di Fɔs Alɔkeshɔn Biɛvhɔ
If di difɔlt 72 KB initial ɔvahɛd na tru tru prɔblɛm fɔ yu yus kes — sɔntɛm yu de spawn tawzin shɔt-layv prɔses, ɛni wan de mek wan anful alɔkeshɔn nɔmɔ — glibc de gi sɔm tunables via mallopt() ɛn di MALLOC_ famili fɔ envayrɔmɛnt vɛriɔbul dɛn.
Di M_TOP_PAD paramita de kɔntrol ɔmɔs ɛkstra mɛmori di alɔkatɔ de aks fɔ pas wetin dɛn nid wantɛm wantɛm. We yu sɛt am to 0 wit mallopt(M_TOP_PAD, 0) i de tɛl di alɔkayshɔn fɔ aks fɔ ɔl wetin dɛn nid, we de ridyus di fɔs ɔvahɛd bad bad wan. Di M_MMAP_THRESHOLD paramita de kɔntrol di sayz ɔp we di alɔkeshɔn dɛn de yuz mmap instead ɔf di arena. Di M_TRIM_THRESHOLD de kɔntrol we fri mɛmori de kam bak to di OS. Ɛn bikɔs glibc 2.26, di glibc.malloc.tcache_count ɛn glibc.malloc.tcache_max tunables de mek yu kɔntrol di trɛd kesh bihayvya.
Bɔt, wan wɔd fɔ tek tɛm: fɔ tyu dɛn paramita ya we yu nɔ tek tɛm bɛnchmak ɔlmost ɔltɛm i kin mek tin wɔs. Di difɔlt dɛn bin pik bays pan bɔku rial-wɔl prɔfayl, ɛn dɛn ripresent wan swit ples fɔ di bɔku bɔku woklɔd dɛn. If yu nɔ gɛt strɔng pruf frɔm prodakshɔn profayl se malloc ovahɛd na bɔtulnɛk — ɛn yu dɔn mɛzhɔ di impak we yu chenj dɛn gɛt — lɛf di difɔlt dɛn nɔmɔ. Premature optimization of di allocator na wan patikyula insidious fכm fכ yak shaving we dεn kכnsכm kכntlεs εnjinia awa fכ nεglijibl bεnεfit.
Wetin Dis De Tich Wi Bɔt Sistɛm Progrɛm
Di 72 KB fɔs-alɔkeshɔn mistɛri na, na in kɔr, lɛsin bɔt abstrakshɔn layers. C++ de gi yu di ilyushɔn se nyu int de alɔkat 4 bayt. Di langwej standad se na so. Yu mental model se na so. Bɔt bitwin yu kɔd ɛn di hadwae sidɔm wan stak fɔ sofistikeyt sistɛm dɛn — di C++ rɔntaym, di C laybri alɔketa, di kɛnal in vayrɔyal mɛmori sabsistim, ɛn di hadwae in MMU ɛn TLB — ɛni wan de ad in yon bihayvya, ɔptimayzeshɔn, ɛn ɔvahɛd.
Dis nɔto fɔlt. Na di ɔl pɔynt fɔ sistɛm softwe. Ɛni layt de fɔ sɔlv wan rial prɔblɛm: di alɔkeshɔn de so yu nɔ nid fɔ mek sistɛm kɔl fɔ ɛvri alɔkeshɔn. Di vayrɔyal mɛmori sistɛm de so yu nɔ nid fɔ manej fizik mɛmori dairekt wan. Di pej fɔlt handla de so mɛmori de kɔmit les ɛn efyushɔn. Ɛvri layt de tred smɔl transparency fɔ big amount fɔ pefɔmɛns ɛn kɔvinant.
Di divɛlɔpa dɛn we bil di sistɛm dɛn we dɛn kin rili abop pan, we de wok fayn pas ɔl na di wan dɛn we ɔndastand dɛn layers ya — nɔto bikɔs dɛn nid fɔ tink bɔt dɛn ɔltɛm, bɔt bikɔs we sɔntin we dɛn nɔ bin de ɛkspɛkt apin (lɛk wan mistiriɔs 72 KB alɔkeshɔn), dɛn gɛt di mental mɔdel fɔ ɔndastand wetin mek. If yu de bil rial-taym tredin sistem, gem injin, ɔ biznɛs pletfɔm we de sav tawzin pipul dɛn we de yuz am, di ebul fɔ rizin bɔt wetin yu kɔd rili de du na di sistem lɛvɛl na in de separet kɔmpiten divɛlɔpa dɛn frɔm ɛksɛpshɔn wan dɛn. Di 72 KB nɔto bɔg. Na yu alɔkatɔ de du in wok fayn fayn wan.
Bil Yu Biznɛs OS Tide
Frɔm frilansa to ɛjɛnshi, Mewayz de pawa 138,000+ biznɛs wit 207 intagreted modul. Start fri, ɔpgrɛd we yu de gro.
Kriɛt Fri Akɔn →Try Mewayz Free
All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.
Get more articles like this
Weekly business tips and product updates. Free forever.
You're subscribed!
Start managing your business smarter today
Join 30,000+ businesses. Free forever plan · No credit card required.
Ready to put this into practice?
Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.
Start Free Trial →Related articles
Hacker News
Bluesky has been dealing with a DDoS attack for nearly a full day
Apr 17, 2026
Hacker News
Human Accelerated Region 1
Apr 17, 2026
Hacker News
Discourse Is Not Going Closed Source
Apr 17, 2026
Hacker News
Substrate AI Is Hiring Harness Engineers
Apr 17, 2026
Hacker News
US Bill Mandates On-Device Age Verification
Apr 17, 2026
Hacker News
Show HN: SPICE simulation → oscilloscope → verification with Claude Code
Apr 17, 2026
Ready to take action?
Start your free Mewayz trial today
All-in-one business platform. No credit card required.
Start Free →14-day free trial · No credit card · Cancel anytime