Kutheni ulwabiwo lwe-C++ (m) lokuqala lusoloko luyi-72 KB?
Amagqabantshintshi
Mewayz Team
Editorial Team
Imfihlelo esemva koLwabelo lwakho lokuqala lwe-C++
Ubhala inkqubo elula ye-C++. Inyeentsha int. Iibhayithi ezine. Utshisa umtya okanye iprofayile yakho yememori oyithandayo, kwaye nantso — inkqubo yakho icelwe nje malunga ne-72 KB kwinkqubo yokusebenza. Hayi iibhayithi ezi-4. Hayi 64 bytes. Ngokupheleleyo 72 KB. Ukuba ukhe wajonga kuloo nombolo kwaye wazibuza ukuba ingaba isixhobo sakho sixoka kuwe, awuwedwa. Oku kubonakala kungaqhelekanga ukuziphatha ngomnye wemibuzo ebuzwa rhoqo phakathi kwabaphuhlisi be-C++ abemba kwimemori yangaphakathi okokuqala, kwaye impendulo isithatha kuhambo olunomdla ngokusebenzisa iileya ezihlala phakathi kwekhowudi yakho kunye ne-hardware yokwenyani.
Kwenzeka ntoni xa Ubizaentsha
Ukuze uqonde amanani angama-72 KB, kufuneka ulandele umkhondo opheleleyo wolwabiwo. Xa ikhowudi yakho ye-C++ iphumeza i-int entsha, umqokeleli uyiguqulela loo nto kwifowuni entsha yokusebenza, ethi kwiinkqubo ezininzi ze-Linux ithumele malloc ukusuka kwi-glibc. Kodwamallocayibuzi ngokuthe ngqo i-kernel ye-4 bytes yememori. I-kernel isebenza kumaphepha - ngokuqhelekileyo i-4 KB kwi-x86_64 - kwaye ixabiso lefowuni yenkqubo likhulu ngokumalunga nokufikelela kwimemori elula. Ukufowunela brk() okanye mmap() kulwabiwo lomntu ngamnye kuya kwenza nayiphi na inkqubo engabalulekanga imise.
Endaweni yoko, i-glibc's memory allocator - ukuphunyezwa okubizwa ngokuba yi-ptmalloc2, ngokwayo yehla kwi-classic ka-Doug Lea dlmalloc-isebenza njengomntu ophakathi. Icela iibhloko ezinkulu zememori kwi-kernel engaphambili, emva koko izikrole zibe ngamaqhekeza amancinci njengoko inkqubo yakho iwafuna. Esi sesona sizathu sisisiseko sonikezelo lwakho lokuqala lwe-4-byte luvusa isicelo esikhulu kakhulu kwinkqubo yokusebenza. Umabi-mali akenzi inkcitho. Kukuba nobuchule.
Ukusasaza i-72 KB: Apho I-Bytes Iya khona
Ulwabiwo oluphezulu lwentloko luvela kumalungu ahlukeneyo athile ekufuneka iqaliswe lixesha lokuqhuba phambi kokuba likunikeze nebyte enye yenkumbulo esebenzisekayo. Ukuqonda icandelo ngalinye kucacisa ukuba kutheni inani lifika apho lenze khona.
Okokuqala, i-glibc's malloc iqalisai-arena engundoqo - isakhiwo esisisiseko sokugcina iincwadi esilandelela zonke izabelo kumsonto oyintloko. Le arena iquka imetadata yemfumba, izikhombisi zoluhlu lwasimahla, kunye nezakhiwo zemigqomo zobungakanani obahlukeneyo bolwabiwo. Umamkeli wandisa ikhefu lenkqubo ngesbrk(), kwaye ulwandiso lokuqala lulawulwa yiparamitha yangaphakathi ebizwa M_TOP_PAD, engagqibekanga ukuya kwi-128 KB ye-padding. Nangona kunjalo, esona sicelo sokuqala silungiselelwa ulungelelwaniso lwephepha kunye nendawo ekhoyo yekhefu, ehlala ikhokelela kwisicelo esincinci sokuqala - esiqhele ukuhlala kufutshane ne-72 KB yesibalo kwinkqubo esanda kuqaliswa.
Okwesibini, ukusukela kwi-glibc 2.26, umamkeli uqalisa umsonto wendawo yokugcina indawo (tcache) kusetyenziso lokuqala. I-tcache iqulethe ii-bins ze-64 (enye ngeklasi yobungakanani obuncinci besabelo), nganye iyakwazi ukubamba ukuya kwi-7 cached chunks. I-tcache_perthread_struct ngokwayo ichitha malunga ne-1 KB, kodwa isenzo sokuyiqala sibangela ukusetwa kwebala elibanzi. Okwesithathu, ixesha lokuqhuba le-C++ sele lilwenzile ulwabiwo phambi kokuba imain() yakho isebenze — abakhi abangatshintshiyo, ukuqaliswa kwe-iostream buffer yestd::cout kunye nabahlobo, kunye noseto lwengingqi zonke zinegalelo kuloo mfumba yokuqala.
Inkqubo ye-Arena kwaye Kutheni Ukwabiwa Kwangaphambili Kuhlakaniphile
Isigqibo sokwabela kwangaphambili isixa esikhulu senkumbulo kunokusicela asiyongozi yophumezo. Lurhwebo lobunjineli ngabom olumiliselwe kumashumi eminyaka yamava enkqubo yenkqubo. Yonke iminxeba eya brk () okanye mmap() ibandakanya ukutshintsha kwemeko ukusuka kwindawo yomsebenzisi ukuya kwindawo ye-kernel, ukuguqulwa kwenkqubo yeemephu zememori yenyani, kunye nohlaziyo lwetafile yephepha. Kwihardware yanamhlanje, umnxeba wenkqubo enye ixabisa malunga ne-100-200 nanoseconds - incinci xa ibekwe wedwa, iyintlekele kwisikali.
Qwalasela inkqubo eyenza i-10,000 yezabelo ezincinci ngexesha lokuqalisa. Ngaphandle kokwabiwa kwangaphambili, oko kuya kuthetha iifowuni ze-10,000 zenkqubo, ixabisa malunga ne-1-2 milliseconds ye-overhead ecocekileyo. Ngokwabiwa kwe-arena-based, ulwabiwo lokuqala lubangela umnxeba wenkqubo enye, kwaye i-9,999 izabelo ezilandelayo zinikezelwa ngokupheleleyo kwindawo yomsebenzisi ngokusebenzisa i-arithmetic ye-pointer kunye nemisebenzi yoluhlu oludibeneyo - nganye ithatha malunga ne-10-50 nanoseconds. Izibalo azicacanga: ulwabiwo lwangaphambili luphumelela ngokwemiyalelo yobukhulu.
I-72 KB oyibonayo kulwabiwo lwakho lokuqala ayidlalanga kwimemori — lutyalo-mali lwentsebenzo. Umabi ubheja ukuba inkqubo yakho iza kwenza ulwabiwo oluthe kratya, kwaye phantse kuyo yonke imeko yehlabathi lokwenyani, ubhejo luhlawula kakuhle. Iindleko zesithuba sedilesi yenyani engasetyenziswanga ngokuyimfuneko nguziro kwiisistim zale mihla ze-64-bit.
Inkumbulo ebonakalayo vs. Inkumbulo yaseMzimbeni: Kutheni kungenamsebenzi
Inkxalabo eqhelekileyo phakathi kwabaphuhlisi abadibana nale ndlela yokuziphatha okokuqala yinkcitho yobutyebi. Ukuba ndifuna kuphela iibytes ezi-4, kutheni inkqubo yam itya 72 KB? Ingqiqo ebalulekileyo kukubaimemori ebonakalayo ayikho imemori yomzimba. Xa i-glibc yandisa ikhefu leprogram nge-72 KB, i-kernel ihlaziya i-mepping memory yenkqubo yenyani, kodwa ayiwabuyiseli ngoko nangoko loo maphepha nge-RAM ebonakalayo. Awona maphepha oqobo abelwe ngokwemfuno iimpazamo zephepha — kuphela xa inkqubo yakho ibhalela kwidilesi ethile apho ikernel inika iphepha lokwenyani lenkumbulo kuyo.
💡 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 →Oku kuthetha ukuba nangona ubungakanani benyani benkqubo yakho bunyuka nge-72 KB, ubungakanani beseti yabahlali (RSS) - inani le-RAM ebonakalayo esetyenzisiweyo - inyuka kuphela ngamaphepha owabambayo. Yenye entsha int, leyo iqhelekile ukuba linye iphepha le-4 KB, kunye nawo nawaphi na amaphepha akhoyo imetadata yebala. Indawo eseleyo ebonakalayo ihleli apho, ilungele ukusetyenziswa, ayibizi nto ngaphandle kwendawo yedilesi - apho une-128 TB kwi-64-bit Linux system.
Lo mahluko ubalulekile xa kusenziwa iprofayile kunye nokubeka iliso kwizicelo zemveliso. Ukuba uyakha isoftware efuna ukulandelela ukusetyenziswa kobutyebi bokwenene - nokuba ngaba yi-SaaS backend, i-microservice, okanye i-analytics pipeline efana naleyo isebenza kwiiplatifomu ezifana Mewayzukusebenza kwezoshishino - kufuneka uhlale ubeka iliso kwi-RSS kunokuba ubungakanani obubonakalayo. Izixhobo ezifana /proc/[pid]/smaps, valgrind --tool=massif, kunye pmap zinokukunika unyawo lwenkumbulo echanekileyo endaweni yokulahlekisa amanani enkumbulo ebonakalayo.
Njani iZahlulelo eziSingatha uLwabiwo lokuqala
Inani le-72 KB lithe ngqo kwi-glibc's ptmalloc2. Abanye abanikezeli bezabelo benza urhwebo olwahlukileyo, kwaye i-overhead yolwabiwo lokuqala iyahluka ngokufanelekileyo. Ukuqonda ezi yantlukwano kubalulekile xa ukhetha umabi wemisebenzi ebuthathaka ekusebenzeni.
- jemalloc (isetyenziswe yi-Facebook, i-FreeBSD) - Isebenzisa isakhiwo se-arena ye-granular kunye ne-thread-local caches. I-overhead yokuqala ithande ukuba phezulu (idla ngokuba ngama-200+ KB) kodwa inika ukusebenza okungcono okunemisonto emininzi ngenxa yokuncipha kwengxabano yokutshixa.
- tcmalloc (Google's Thread-Caching Malloc) — Inika i-cache yomsonto ngamnye malunga ne-2 MB ngokungagqibekanga, kunye nolwabiwo lwangaphambili olunobundlobongela. I-overhead yokuqala iphezulu, kodwa ulwabiwo oluncinci olulandelayo lukhawuleza kakhulu.
- musl libc's malloc — Isebenzisa uyilo olulula kakhulu olusekwe kwimmap kulo lonke ulwabiwo. I-overhead yokuqala incinci (idla ngokuba yi-4 KB kwisabelo ngasinye), kodwa ixabiso lolwabiwo-mali liphezulu ngenxa yeefowuni ezihlala rhoqo.
- mimalloc (Microsoft) — Isebenzisa ulwabiwo olusekelwe kwisegment kunye namacandelo angama-64 MB. Ulwabiwo lokuqala lubangela ugcino lwenyani lwe-64 MB (ngokuzinikela okuncinci ngokomzimba), indawo yedilesi yokurhweba kwindawo ekhethekileyo kunye nokusetyenziswa.
Ukhetho phakathi kwaba bahluleli kuxhomekeke ngokupheleleyo kumthwalo wakho womsebenzi. Kumncedisi osebenza ixesha elide kunye nolwabiwo olunzima lwemisonto emininzi, ijemalloc okanye i-tcmalloc ikholisa ukodlula ukungagqibeki kwe-glibc. Kwiinkqubo ezibambeneyo kwimemori, indlela elula ye-musl inokukhethwa ngaphandle kokuhamba okuphantsi. Kuninzi lwenjongo-jikelele yedesktop kunye nezicelo zeseva, i-ptmalloc2's 72 KB ngaphezulu kwentloko ephezulu imele ukungagqibeki okufanelekileyo okusebenza kakuhle ngaphandle kokulungiswa.
UkuLungisa iNdlela yokuziPhatha yoLwabiwo lokuqala
Ukuba umphezulu we-72 KB ongagqibekanga uyingxaki ngenene kwimeko yakho yosetyenziso — mhlawumbi uzala amawaka eenkqubo zexesha elifutshane, nganye isenza ulwabiwo olumbalwa — i-glibc ibonelela ngeendlela ezininzi zokugayela ngemallopt() kunye neMALLOC_ usapho lwezinto eziguquguqukayo zemo engqongileyo.
IM_TOP_PAD iparamitha ilawula ukuba ingakanani inkumbulo eyongezelelweyo umamkeli ayicelayo ngaphaya kwemfuneko ngokukhawuleza. Ukuyibeka ku-0 nge-mallopt (M_TOP_PAD, 0) ixelela umabi ukuba acele kuphela into efunekayo, ukunciphisa i-overhead yokuqala kakhulu. I M_MMAP_THRESHOLD iparameter ilawula ubungakanani obungentla apho ulwabiwo lusebenzisa imap endaweni yebala. I-M_TRIM_THRESHOLD ilawula xa inkumbulo ekhululweyo ibuyiselwa kwi-OS. Kwaye ukusukela kwi-glibc 2.26, iglibc.malloc.tcache_count kunye ne-glibc.malloc.tcache_max i-tunables zikuvumela ukuba ulawule ukuziphatha kwe-cache yentambo.
Nangona kunjalo, isilumkiso: ukulungisa ezi parameters ngaphandle komlinganiselo ngononophelo phantse kusoloko kusenza izinto zibembi. Okungagqibekanga kwakhethwa ngokusekelwe kulwazi olubanzi lwehlabathi lokwenyani, kwaye zimele indawo emnandi kuninzi olukhulu lomsebenzi. Ngaphandle kokuba unobungqina obuqinileyo obuvela kwiprofayili yemveliso yokuba i-malloc overhead yi-bottleneck - kwaye ulinganise impembelelo yotshintsho lwakho - shiya izinto ezingagqibekanga zodwa. Ukwenziwa kwangethuba komabi luhlobo oluchuliweyo lokucheba i-yak olutye iiyure ezininzi zobunjineli ngenzuzo engenamsebenzi.
Yintoni le isifundisa yona malunga neNkqubo yeNkqubo
Imfihlakalo yokwabiwa kokuqala kwama-72 KB, kumbindi wayo, sisifundo malunga izaleko zokuthabatha. I-C ++ ikunika inkohliso yokubaintsha intyabela i-4 bytes. Umgangatho wolwimi utsho njalo. Imodeli yakho yengqondo itsho njalo. Kodwa phakathi kwekhowudi yakho kunye ne-hardware kuhlala isitakhi seenkqubo ezintsonkothileyo - ixesha lokuqhuba le-C++, umabi wethala leencwadi le-C, inkqubo esezantsi yememori ye-kernel, kunye ne-MMU ye-hardware kunye ne-TLB - nganye idibanisa ukuziphatha kwayo, ukulungelelanisa, kunye nentloko.
Le ayisosiphene. Yiyo yonke inqaku lenkqubo yesoftware. Umaleko ngamnye ukhona ukusombulula ingxaki yokwenyani: umenzi-mali ukhona ngoko ke akunyanzelekanga ukuba wenze iminxeba yenkqubo kulo lonke ulwabiwo. Inkqubo yenkumbulo yenyani ikhona ukuze ungalawuleki inkumbulo ephathekayo ngokuthe ngqo. Isiphathi sesiphoso sephepha sikhona ukuze imemori izinikele ngokonqena kwaye ngokufanelekileyo. Lonke umaleko urhweba ngexabiso elincinci lokungafihli malunga nesixa esikhulu sokusebenza kunye nokulula.
Abaphuhlisi abakha ezona nkqubo zithembekileyo, zisebenza kakhulu ngabo baqonda ezi maleko - kungekhona ngenxa yokuba kufuneka bacinge ngazo rhoqo, kodwa ngenxa yokuba xa kwenzeka into engalindelekanga (njengolwabiwo oluyimfihlakalo lwe-72 KB), banomzekelo wengqondo ukuqonda ukuba kutheni. Nokuba wakha inkqubo yorhwebo yexesha lokwenyani, i-injini yomdlalo, okanye iqonga leshishini elikhonza amawakawaka abasebenzisi, ukukwazi ukuqiqa malunga nokuba ikhowudi yakho yenza ntoni na kwinqanaba lenkqubo kuko okwahlula abaphuhlisi abanobuchule kwabakhethekileyo. I-72 KB ayiyompazamo. Ngumabi wakho owenza umsebenzi wakhe ngokuqaqambileyo.
Yakha ishishini lakho OS namhlanje
Ukusuka kwi-freelancers ukuya kwiiarhente, iMewayz inika amandla amashishini angama-138,000+ aneemodyuli ezidityanisiweyo ezingama-207. Qala simahla, uphucule xa ukhula.
Dala iAkhawunti Yasimahla → div>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
We use cookies to improve your experience and analyze site traffic. Cookie Policy