Kungani isabelo sokuqala se-C++ (m) sihlala singu-72 KB?
Amazwana
Mewayz Team
Editorial Team
Imfihlakalo Engemuva Kwesabelo Sakho Sokuqala se-C++
Ubhala uhlelo olulula lwe-C++. I-int entsha eyodwa. Amabhayithi amane. Ushisa i-strace noma iphrofayili yakho yenkumbulo oyintandokazi, futhi nansi - inqubo yakho isanda kucela cishe u-72 KB ohlelweni lokusebenza. Hhayi amabhayithi angu-4. Hhayi amabhayithi angama-64. I-72 KB egcwele. Uma uke wagqolozela leyo nombolo futhi wazibuza ukuthi ithuluzi lakho liqamba amanga kuwe, awuwedwa. Lokhu kuziphatha okubonakala kuxakile kungomunye wemibuzo evame ukubuzwa phakathi konjiniyela be-C++ abamba abangaphakathi enkumbulweni okokuqala ngqa, futhi impendulo isithatha ohambweni oluhehayo ngokusebenzisa izendlalelo ezihlala phakathi kwekhodi yakho nehardware yangempela.
Kwenzekani Uma Ushayela okusha
Ukuze uqonde isibalo esingu-72 KB, udinga ukulandelela uchungechunge olugcwele lokwabiwa. Uma ikhodi yakho ye-C++ isebenzisa i-int entsha, umhlanganisi uhumusha lokho kube ucingo ku-opharetha omusha, okuthi kumasistimu amaningi e-Linux luthumele ku-malloc kusuka ku-glibc. Kodwa i-malloc ayibuzi ngokuqondile i-kernel ngamabhayithi angu-4 enkumbulo. I-kernel isebenza emakhasini - imvamisa engu-4 KB ku-x86_64 - futhi izindleko zocingo lwesistimu zikhulu kakhulu uma kuqhathaniswa nokufinyelela okulula kwememori. Ukushayela i-brk() noma i-mmap() kuso sonke isabelo ngasinye kungenza noma yiluphi uhlelo olungasho lutho lume.
Esikhundleni salokho, isinikezeli senkumbulo ye-glibc — ukusetshenziswa okubizwa nge-ptmalloc2, yona ngokwayo yehle kusukela ku-dlmalloc yakudala ka-Doug Lea dlmalloc — isebenza njengomuntu ophakathi. Icela amabhlogo amakhulu enkumbulo ku-kernel engaphambili, bese iwaqopha abe izingcezu ezincane njengoba uhlelo lwakho luwadinga. Lesi yisizathu esibalulekile sokuthi isabelo sakho sokuqala esingu-4-byte sicuphe isicelo esikhulu kusistimu yokusebenza. Owabayo akasaphazi. Kuyisu.
Ihlukanisa i-72 KB: Lapho Amabhayithi Eya Khona
Isihloko sokuqala sokwaba sivela ezingxenyeni ezimbalwa ezihlukile okufanele isikhathi sokusebenza kufanele siziqalise ngaphambi kokuthi sikunikeze ngisho nebhayithi eyodwa yememori esebenzisekayo. Ukuqonda ingxenye ngayinye kuchaza ukuthi kungani inombolo ifika lapho ifika khona.
Okokuqala, i-glibc's malloc iqalisa inkundla eyinhloko — isakhiwo esiyinhloko sokugcinwa kwamabhuku esilandelela zonke izabelo kuchungechunge oluyinhloko. Le nkundla ihlanganisa imethadatha yenqwaba, izikhombi zohlu lwamahhala, nezakhiwo zomgqomo wosayizi abahlukene bokwaba. Umhlinzeki welula ikhefu lohlelo nge-sbrk(), futhi isandiso sokuqala sibuswa ipharamitha yangaphakathi ebizwa ngokuthi M_TOP_PAD, ezenzakalela ibe ngu-128 KB yokunamathisela. Kodwa-ke, isicelo sangempela sangempela silungiselelwa ukuqondanisa kwekhasi kanye nendawo ekhona yekhefu, okuvamise ukuphumela esicelweni esincane sokuqala - ngokuvamile sifike eduze kwalesi sibalo esingu-72 KB ngenqubo esanda kuqalwa.
Okwesibili, kusukela ku-glibc 2.26, isibambisi siqalisa inqolobane yochungechunge lwendawo (tcache) ekusetshenzisweni kokuqala. I-tcache iqukethe imigqomo engama-64 (owodwa ekilasini losayizi wokwabiwa okuncane), ngalinye likwazi ukubamba izingcezu eziyisi-7 ezifakwe kunqolobane. I-tcache_perthread_struct yona idla cishe u-1 KB, kodwa isenzo sokuyiqalisa sicupha ukusethwa kwenkundla ebanzi. Okwesithathu, isikhathi sokusebenza se-C++ sesivele sikwenzile ukwaba ngaphambi kokuthi main() yakho ize isebenze — abakhi abamile, ukuqaliswa kwe-iostream buffer ye-std::cout nabangani, nokusethwa kwendawo konke kunomthelela kuleyo nqwaba yokuqala.
Isistimu Ye-Arena nokuthi Kungani Ukunikezwa Kwangaphambili Kuhlakaniphile
Isinqumo sokwaba kusengaphambili ingxenye enkulu yenkumbulo esikhundleni sokuyicela kancane akuyona ingozi yokuqaliswa. Kuyi-tradeoff yamabomu yobunjiniyela esekelwe emashumini eminyaka olwazi lokuhlela izinhlelo. Lonke ucingo oluya ku-brk() noma ku-mmap() lubandakanya ukushintshwa komongo kusuka esikhaleni somsebenzisi kuya ku-kernel space, ukuguqulwa kwemephu yememori ebonakalayo yenqubo, kanye nezibuyekezo zethebula lekhasi ezingaba khona. Ku-hardware yesimanjemanje, ikholi yesistimu eyodwa ibiza cishe ama-nanosecond angu-100-200 - incane ngokuhlukaniswa, iyingozi esikalini.
Cabangela uhlelo olwenza ukwaba okuncane okungu-10,000 phakathi nokuqaliswa. Ngaphandle kokwabiwa kwangaphambili, lokho kungasho amakholi esistimu angu-10,000, abiza cishe ama-millisecond angu-1-2 we-overhead emsulwa. Ngesabelomali esisekelwe enkundleni, isabelo sokuqala sivula ikholi yesistimu eyodwa, futhi ukwabiwa okulandelayo okungu-9,999 kunikezwa isevisi ngokuphelele endaweni yomsebenzisi ngokusebenzisa i-arithmetic yesikhombi nemisebenzi yohlu oluxhunyiwe - ngakunye kuthatha cishe ama-nanoseconds angu-10-50. Izibalo azicacile: ukwabiwa kwangaphambili kuwina ngama-oda wobukhulu.
I-72 KB oyibona esabelweni sakho sokuqala ayiyona inkumbulo emoshiwe — iwukutshalwa kwezimali kokusebenza. Isabelomali sibheja ukuthi uhlelo lwakho luzokwenza ukwaba okwengeziwe maduze, futhi cishe kuzo zonke izimo zomhlaba wangempela, lokho kubheja kukhokha kahle. Izindleko zesikhala sekheli elingasetshenzisiwe empeleni ziro kumasistimu esimanje angama-64-bit.
I-Virtual Memory vs. Inkumbulo Ephathekayo: Kungani Ingenandaba
Okukhathazayo okuvamile phakathi konjiniyela abahlangabezana nalokhu kuziphatha okokuqala wukumosheka kwensiza. Uma ngidinga amabhayithi angu-4 kuphela, kungani uhlelo lwami ludla u-72 KB? Ukuqonda okubalulekile ukuthiinkumbulo ebonakalayo ayiyona inkumbulo yomzimba. Lapho i-glibc inweba ikhefu lohlelo ngo-72 KB, i-kernel ibuyekeza ukuhlelwa kwememori okubonakalayo yenqubo, kodwa ayibuyiseli ngokushesha lawo makhasi nge-RAM ebonakalayo. Amakhasi angempela aphathekayo anikezwa ngokufunwa namaphutha ekhasi — kuphela uma uhlelo lwakho lubhalela ekhelini elithile lapho i-kernel inikezela ngekhasi langempela lememori kulo.
💡 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 →Lokhu kusho ukuthi noma usayizi wokubuka wenqubo yakho ukhuphuka ngo-72 KB, usayizi wesethi yesakhamuzi (RSS) — inani le-RAM ebonakalayo elidliwe ngempela — linyuka ngamakhasi owathintayo kuphela. Nge-int entsha eyodwa, lokho kuvamise ukuba yikhasi elilodwa elingu-4 KB, kanye nanoma imaphi amakhasi amethadatha yenkundla ewasebenzisayo. Indawo esele ebonakalayo ihlezi lapho, isilungele ukusetshenziswa, ayibizi lutho ngaphandle kwendawo yekheli - lapho une-128 TB ohlelweni lwe-Linux lwamabhithi angu-64.
Lo mehluko ubalulekile uma wenza iphrofayela futhi uqapha izinhlelo zokusebenza zokukhiqiza. Uma wakha isofthiwe edinga ukulandelela ukusetshenziswa kwensiza yangempela - kungakhathaliseki ukuthi i-SaaS backend, i-microservice, noma i-analytics pipeline efana naleyo esebenza ezinkundleni ezifana ne-Mewayz yokusebenza kwebhizinisi — kufanele uhlale uqaphe i-RSS kunosayizi obonakalayo. Amathuluzi afana ne-/proc/[pid]/smaps, valgrind --tool=massif, kanye ne-pmap angakunikeza imilobo yezinyawo ezinembile zenkumbulo engokwenyama esikhundleni sokudukisa izibalo zenkumbulo ebonakalayo.
Indlela Izabelo Ezihluke Ngazo Ezisingatha Ngayo Isabelo Sokuqala
Isibalo esingu-72 KB siqonde ngqo ku-ptmalloc2 ye-glibc. Abanye abahlinzeki bezabelo benza ama-tradeoffs ahlukene, futhi i-overhead yokwaba yokuqala iyahluka ngokufanele. Ukuqonda lo mehluko kubalulekile uma ukhetha isabi sezinhlelo zokusebenza ezizwelayo ekusebenzeni.
- jemalloc (isetshenziswa i-Facebook, i-FreeBSD) — Isebenzisa isakhiwo senkundla esiyimbudumbudu esinezinqolobane zasendaweni ezinentambo. I-overhead yokuqala ivame ukuba phezulu (ngokuvamile ingu-200+ KB) kodwa iletha ukusebenza okungcono okunemicu eminingi ngenxa yokuncishiswa kwengxabano yokukhiya.
- tcmalloc (I-Google's Thread-Caching Malloc) — Inikeza inqolobane yomucu ngamunye cishe cishe u-2 MB ngokuzenzakalela, nokwabiwa kwangaphambili okunolaka. I-overhead yokuqala iphakeme, kodwa ukwaba okuncane okulandelayo kuyashesha kakhulu.
- musl libc's malloc — Isebenzisa umklamo olula kakhulu osuselwe ku-mmap kukho konke ukunikezwa. I-overhead yokuqala incane (imvamisa ingu-4 KB kuphela ngesabelo ngasinye), kodwa izindleko zokwabiwa ngakunye ziphezulu ngenxa yezingcingo zesistimu ezivamile.
- mimalloc (Microsoft) — Isebenzisa isabelo esisekelwe esigabeni esinamasegimenti angu-64 MB. Isabelo sokuqala sivula ukubhukha okubonakalayo okungu-64 MB (ngokuzibophezela okuncane ngokomzimba), indawo yekheli lokuhweba lendawo eyingqayizivele kanye nokusebenza.
Ukukhetha phakathi kwalaba babi kuncike ngokuphelele emthwalweni wakho womsebenzi. Kuzinhlelo zokusebenza zeseva ezisebenza isikhathi eside ezinokwabiwa kwezintambo eziningi ezisindayo, i-jemalloc noma i-tcmalloc ngokuvamile idlula okuzenzakalelayo kwe-glibc. Kuzinhlelo ezishumekiwe ezinenkumbulo, indlela elula ye-musl ingase ithandeke naphezu kokusebenza okuphansi. Ezinhlelweni eziningi zedeskithophu nezeseva ezisetshenziswayo, i-ptmalloc2's 72 KB ephezulu imele okumisiwe okunengqondo okusebenza kahle ngaphandle kokushuna.
Ukulungisa Indlela Yokuqala Yokwaba
Uma isihloko sokuqala esizenzakalelayo esingu-72 KB siyinkinga ngempela esimweni sakho sokusebenzisa — mhlawumbe uzala izinkulungwane zezinqubo zesikhashana, ngayinye yenza ukwaba okumbalwa — i-glibc ihlinzeka ngama-tunable ambalwa nge-mallopt() kanye MALLOC_ nomndeni wokuhlukahluka kwemvelo.
Ipharamitha ye-M_TOP_PAD ilawula ukuthi ingakanani inkumbulo eyengeziwe ecelwa ngumnikeli ngaphezu kwaleyo edingekayo ngokushesha. Ukuyimisa ibe ngu-0 nge-mallopt(M_TOP_PAD, 0) itshela owabayo ukuthi acele kuphela okudingekayo, kwehlisa i-overhead yasekuqaleni kakhulu. Ipharamitha ye-M_MMAP_THRESHOLD ilawula usayizi ongenhla ukuthi izabelo zisebenzisa i-map esikhundleni senkundla. M_TRIM_THRESHOLD ilawula lapho inkumbulo ekhululiwe ibuyiselwa ku-OS. Futhi njengoba i-glibc 2.26, glibc.malloc.tcache_count kanye ne-glibc.malloc.tcache_max ekwazi ukushintshwa kukuvumela ukuthi ulawule ukuziphatha kwenqolobane yochungechunge.
Kodwa-ke, isixwayiso: ukushuna la mapharamitha ngaphandle kokulinganisa ngokucophelela cishe kuhlale kwenza izinto zibe zimbi kakhulu. Okuzenzakalelayo kwakhethwa ngokusekelwe kuphrofayela ebanzi yomhlaba wangempela, futhi kumelela indawo enhle yomthwalo omningi womsebenzi. Ngaphandle uma unobufakazi obuqinile obuvela ekuphrofayilini kokukhiqiza bokuthi i-malloc overhead iyibhodlela - futhi ulinganise umthelela wezinguquko zakho - shiya okuzenzakalelayo kuphela. Ukuthuthukisa ngaphambi kwesikhathi kwe-allocator kuyindlela ecashile ngokukhethekile yokushefa kwe-yak osekudle amahora amaningi wobunjiniyela ngenzuzo encane.
Lokhu Kusifundisani Mayelana Nokuhlelwa Kwezinhlelo
Imfihlakalo yokwabiwa kokuqala engu-72 KB, emnyombeni wayo, iyisifundo mayelana nezendlalelo zokukhipha. I-C++ ikunikeza umbono wokuthi i-int entsha yabela amabhayithi angu-4. Izinga lolimi lisho njalo. Imodeli yakho yengqondo isho njalo. Kodwa phakathi kwekhodi yakho nezingxenyekazi zekhompuyutha kuhlezi inqwaba yezinhlelo eziyinkimbinkimbi - isikhathi sokusebenza se-C++, isabi selabhulali ye-C, isistimu engaphansi yememori ye-kernel, kanye ne-MMU ne-TLB yezingxenyekazi zekhompuyutha - ngayinye ingeza indlela yayo yokuziphatha, ukuthuthukiswa, kanye nesihloko.
Lokhu akulona iphutha. Iphuzu lonke lesoftware yezinhlelo. Isendlalelo ngasinye sikhona ukuze kuxazululwe inkinga yangempela: isibambisi sikhona ngakho-ke akudingekile ukuthi wenze amakholi wesistimu kukho konke ukwabiwa. I-virtual memory system ikhona ngakho-ke awudingi ukuphatha inkumbulo engokwenyama ngqo. Isibambi samaphutha ekhasi sikhona ngakho inkumbulo yenziwa ngobuvila nangempumelelo. Lonke ungqimba luhweba ngenani elincane lokukhanyela ngenani elikhulu lokusebenza nokunethezeka.
Onjiniyela abakha amasistimu athembekile, asebenza kahle kakhulu yilabo abaqonda lezi zendlalelo — hhayi ngoba bedinga ukucabanga ngazo njalo, kodwa ngoba uma kwenzeka okuthile okungalindelekile (njengokwabiwa okungaqondakali okungu-72 KB), banemodeli yengqondo yokuqonda ukuthi kungani. Kungakhathaliseki ukuthi wakha isistimu yokuhweba yesikhathi sangempela, injini yegeyimu, noma inkundla yebhizinisi esebenzela izinkulungwane zabasebenzisi, ikhono lokucabanga ngokuthi ikhodi yakho yenzani ngempela ezingeni lesistimu yilo elihlukanisa onjiniyela abanekhono kwabakhethekile. I-72 KB ayisona isiphazamisi. Isabelo sakho senza umsebenzi waso ngobuhlakani.
Yakha I-OS Yebhizinisi Lakho Namuhla
Kusuka kuma-freelancers kuya kuma-ejensi, i-Mewayz inika amandla amabhizinisi angu-138,000+ ngamamojula ahlanganisiwe angu-207. Qala mahhala, thuthukisa uma ukhula.
Dala I-akhawunti Yamahhala →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