Nahoana no 72 KB foana ny fizarana C++ (m) voalohany?
Hevitra
Mewayz Team
Editorial Team
Ny zava-miafina ao ambadiky ny fizarana C++ voalohany
Manoratra programa C++ tsotra ianao. Iray int vaovao. Efatra bytes. Mandrehitra strace ianao na ny mombamomba ny fahatsiarovana ankafizinao indrindra, ary eo izy io — vao avy nangataka 72 KB teo amin'ny rafitra fiasanao ny dinganao. Tsy 4 bytes. tsy 64 bytes. 72 KB feno. Raha efa nibanjina an'io isa io ianao ary nanontany tena raha nandainga taminao ny fitaovanao, dia tsy irery ianao. Ity fihetsika toa hafahafa ity dia iray amin'ireo fanontaniana matetika apetraka eo amin'ireo mpamorona C++ izay sambany vao mihady ao anaty fitadidiana, ary ny valiny dia mitondra antsika amin'ny dia mahavariana amin'ny alalan'ireo sosona eo anelanelan'ny kaody sy ny fitaovana tena izy.
Inona no mitranga rehefa miantso vaovao
ianaoMba hahatakarana ny tarehimarika 72 KB dia mila manara-maso ny rojo fitsinjarana feno ianao. Rehefa manatanteraka new intnao ny kaody C++, dia adikan'ilay mpanangom-bokatra ho antso ho an'ny operator new, izay amin'ny ankamaroan'ny rafitra Linux dia manolotra ny mallocavy amin'ny glibc. Fa mallocdia tsy manontany mivantana amin'ny kernel ny fahatsiarovana 4 bytes. Ny kernel dia miasa amin'ny pejy - matetika 4 KB amin'ny x86_64 - ary ny vidin'ny antso an-tariby dia lehibe raha oharina amin'ny fidirana fahatsiarovana tsotra. Ny fiantsoana brk() na mmap() ho an'ny fizarana tsirairay dia hampiato ny fandaharana tsy misy dikany.
Fa kosa, ny mpizara fahatsiarovana an'i glibc — fampiharana antsoina hoe ptmalloc2, dia avy amin'ny dlmalloc mahazatra an'i Doug Lea — miasa toy ny mpanelanelana. Mangataka bloc fahatsiarovana lehibe avy amin'ny kernel eo aloha izy, avy eo sokafy ho ampahany kely kokoa araka izay ilain'ny programanao. Izany no antony fototra mahatonga ny fanomezan-dàlana 4-byte voalohany anao hiteraka fangatahana lehibe kokoa amin'ny rafitra miasa. Tsy mandany vola ny mpizara. Tetikady izany.
Manaparitaka ny 72 Kio: Aiza no alehan'ny Bytes
Ny famatsiam-bola voalohany dia avy amin'ny singa miavaka maromaro izay tsy maintsy atomboka amin'ny fotoana fampandehanana vao afaka manome anao na dia byte tokana amin'ny fahatsiarovana azo ampiasaina aza. Ny fahatakarana ny singa tsirairay dia manazava ny antony mahatonga ny isa amin'ny toerana misy azy.
Voalohany, ny malloc an'ny glibc dia manomboka ny kianja lehibe — ny rafitra fitahirizam-boky voalohany izay manara-maso ny fizarana rehetra amin'ny kofehy lehibe. Ity kianja ity dia ahitana metadata ho an'ny antontam-bato, tondro lisitra maimaim-poana, ary rafitra bin ho an'ny haben'ny fizarana samihafa. Ny mpizara dia manitatra ny fiatoana fandaharana amin'ny alalan'ny sbrk(), ary ny fanitarana voalohany dia fehezin'ny mari-pamantarana anatiny antsoina hoe M_TOP_PAD, izay tsy mety amin'ny 128 KB ny padding. Na izany aza, ny tena fangatahana voalohany dia amboarina ho an'ny fampifanarahana ny pejy sy ny toerana fiatoana efa misy, izay matetika miteraka fangatahana kely kokoa — matetika tonga eo akaikin'io tarehimarika 72 KB io amin'ny dingana vao natomboka.
Faharoa, nanomboka tamin'ny glibc 2.26, ny mpizara dia manomboka cache an-toerana (tcache) amin'ny fampiasana voalohany. Ny tcache dia misy baoritra 64 (iray isaky ny kilasin'ny habe kely), ny tsirairay dia mahazaka hatramin'ny 7 cache. Ny tcache_perthread_structny tenany dia mandany manodidina ny 1 Kio, fa ny hetsika amin'ny fanombohana azy dia miteraka ny fananganana kianja midadasika kokoa. Fahatelo, efa nanao fizarana mialoha ny main()o ny C++ — constructors statik, iostream buffer initialization ho an'ny std::coutary ny namana, ary ny fametrahana eo an-toerana dia samy mandray anjara amin'ny dian-tongotra voalohany.
Ny rafitra Arena sy ny antony maha-manan-tsaina ny Fanomezana mialoha
Tsy kisendrasendra eo amin'ny fampiharana ny fanapahan-kevitra hanokana ampahany betsaka amin'ny fitadidiana fa tsy mangataka azy tsindraindray. Izy io dia fifampiraharahana ara-teknika niniana niorim-paka tao anatin'ny traikefa momba ny fandaharana rafitra nandritra ny am-polony taona maro. Ny antso rehetra mankany amin'ny brk() na mmap() dia misy fifandimbiasan'ny contexte avy amin'ny habaka mpampiasa mankany amin'ny habaka kernel, ny fanovana ny sarintany fitadidiana virtoaly amin'ny dingana, ary ny fanavaozana ny latabatra pejy. Amin'ny fitaovana maoderina, ny antso an-tariby tokana dia mitentina 100-200 nanosegondra eo ho eo — tsy misy dikany raha mitokana, loza mitatao.
Eritrereto ny programa iray izay manome famatsiana kely 10.000 mandritra ny fanombohana. Raha tsy misy famatsiana mialoha, dia midika izany fa antso an-tariby 10.000, mitentina eo amin'ny 1-2 milliseconds amin'ny overhead madio. Miaraka amin'ny allocator mifototra amin'ny kianja, ny fizarana voalohany dia miteraka antso an-tariby tokana, ary ny fizarana 9,999 manaraka dia atolotra tanteraka amin'ny habaka mpampiasa amin'ny alàlan'ny asa arithmetika tondro sy lisitra mifandray - samy maka 10-50 nanoseconds eo ho eo. Ny matematika dia tsy misy dikany: mandresy amin'ny halehiben'ny halehibeny ny fizarana mialoha.
Tsy fitadidiana very maina ny 72 KB hitanao amin'ny fizaranao voalohany — fampiasam-bola mahomby izany. Ny mpizara dia miloka fa ny programanao dia hanome famatsiam-bola bebe kokoa tsy ho ela, ary saika amin'ny toe-javatra rehetra tena misy eto amin'izao tontolo izao, io filokana io dia mandoa vola be. Ny vidin'ny habaka adiresy virtoaly tsy ampiasaina dia aotra amin'ny rafitra 64-bit maoderina.
Fahatsiarovana virtoaly vs. fitadidiana ara-batana: Nahoana no tsy misy dikany izany
Ny fanahiana mahazatra eo amin'ireo mpamorona izay sambany vao mahita ity fihetsika ity dia ny fandaniam-bola. Raha mila 4 bytes fotsiny aho, nahoana no mandany 72 KB ny programako? Ny hevi-dehibe dia ny fahatsiarovana virtoaly dia tsy fitadidiana ara-batana. Rehefa manitatra ny fahatapahan'ny programa amin'ny 72 KB ny glibc, dia manavao ny sarintanin'ny fitadidiana virtoaly ny kernel, saingy tsy mamerina avy hatrany ireo pejy ireo miaraka amin'ny RAM ara-batana. Ny pejy fizika tena izy dia atokana amin'ny fangatahana amin'ny alalan'ny fahadisoan'ny pejy — rehefa manoratra amina adiresy manokana ny programanao vao manome pejy tena fitadidiana azy ny kernel.
💡 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 →Midika izany fa na dia mitombo 72 KB aza ny haben'ny virtoaly ataonao, ny haben'ny mponina (RSS) — ny habetsahan'ny RAM tena laniny — dia mitombo amin'ny pejy tena kitihinao ihany. Ho an'ny new int tokana, izany matetika dia pejy iray 4 KB, miampy izay pejy misy ny metadata arena. Ny habaka virtoaly sisa dia mipetraka eo, vonona hampiasaina, tsy misy vidiny afa-tsy ny habaka adiresy — izay manana 128 TB amin'ny rafitra Linux 64-bit ianao.
Io fanavahana io dia tena ilaina rehefa manao profil sy manara-maso ny fampiharana famokarana. Raha manorina rindrambaiko mila manara-maso ny fanjifana loharanon-karena tena izy - na SaaS backend, microservice, na fantsona analyse toy ireo mandeha amin'ny sehatra toy ny Mewayzho an'ny asa fandraharahana - tokony hanara-maso ny RSS foana ianao fa tsy ny haben'ny virtoaly. Ny fitaovana toy ny /proc/[pid]/smaps, valgrind --tool=massif, ary pmap dia afaka manome anao dian-tongotra fitadidiana ara-batana marina fa tsy tarehimarika fitadidiana virtoaly mamitaka.
Ahoana no fomba itondran'ny mpizara samihafa ny fizarana voalohany
Ny tarehimarika 72 KB dia manokana amin'ny ptmalloc2 an'ny glibc. Ny mpizara hafa dia manao fifampiraharahana samihafa, ary miovaova araka izany ny fandaniana voalohany. Zava-dehibe ny fahatakarana ireo fahasamihafana ireo rehefa misafidy mpizara ho an'ny fampiharana saro-pady.
- jemalloc (ampiasain'ny Facebook, FreeBSD) — Mampiasa firafitry ny kianja midadasika kokoa misy cache eo an-toerana. Ny overhead voalohany dia mirona ho ambony kokoa (matetika 200+ KB) fa manome vokatra tsara kokoa amin'ny kofehy maromaro noho ny fihenan'ny fifandirana hidin-trano.
- tcmalloc (Google's Thread-Caching Malloc) — Mametraka cache isaky ny kofehy eo amin'ny 2 MB eo ho eo amin'ny default, miaraka amin'ny famatsiana mialoha mahery vaika. Ambony ambony kokoa ny overhead voalohany, fa haingana dia haingana ny famatsiana kely manaraka.
- musl libc's malloc — Mampiasa endrika tsotra kokoa mifototra amin'ny mmap ho an'ny fizarana rehetra. Ny overhead voalohany dia kely indrindra (matetika 4 Kio isaky ny famatsiam-bola fotsiny), fa ny sarany isaky ny fizarana dia ambony noho ny antson'ny rafitra matetika kokoa.
- mimalloc (Microsoft) — Mampiasa fizarana mifototra amin'ny fizarana misy fizarana 64 MB. Ny fizarana voalohany dia miteraka famandrihana virtoaly 64 MB (miaraka amin'ny fanoloran-tena ara-batana faran'izay kely), toerana adiresin'ny varotra ho an'ny toerana miavaka sy ny fidirana.
Miankina tanteraka amin'ny enta-mavesatrao ny safidy eo amin'ireo mpizara ireo. Ho an'ny rindranasa mpizara efa mandeha lava miaraka amin'ny famatsiana kofehy maro be, ny jemalloc na tcmalloc dia mazàna mihoatra noho ny default an'ny glibc. Ho an'ny rafitra tafiditra ao anatin'ny fitadidiana, ny fomba tsotra kokoa ataon'ny musl dia mety ho tsara kokoa na dia ambany kokoa aza ny fidirana. Ho an'ny ankamaroan'ny rindranasa desktop sy mpizara amin'ny tanjona ankapobeny, ny overhead voalohany 72 KB an'ny ptmalloc2 dia maneho ny toerana misy azy izay miasa tsara tsy misy fanamafisam-peo.
Fanefena ny fitondran-tenan'ny fizarana voalohany
Raha toa ka tena manahirana amin'ny tranga fampiasanao ny overhead voalohany 72 KB - angamba ianao dia miteraka dingana tsy maharitra an'arivony, tsirairay avy dia tsy manome afa-tsy fizarana vitsivitsy — ny glibc dia manome tonelina maromaro amin'ny alalan'ny mallopt() sy ny MALLOC_ fianakaviana fari-piainan'ny tontolo iainana.
Ny parameter M_TOP_PAD dia mifehy ny habetsahan'ny fitadidiana fanampiny angatahan'ny mpizara mihoatra ny zavatra ilaina avy hatrany. Ny fametrahana azy ho 0 miaraka amin'ny mallopt(M_TOP_PAD, 0) dia milaza amin'ny mpaninjara mba hangataka izay ilaina ihany, ka mampihena be ny overhead voalohany. Ny mari-pamantarana M_MMAP_THRESHOLD dia mifehy ny habe etsy ambony izay ampiasain'ny famatsiana mmap fa tsy ny kianja. Ny M_TRIM_THRESHOLD no mifehy rehefa averina amin'ny OS ny fahatsiarovana nafahana. Ary hatramin'ny glibc 2.26, ny glibc.malloc.tcache_count sy glibc.malloc.tcache_max dia mamela anao hifehy ny fitondran-tena cache.
Na izany aza, teny fampitandremana: ny fampifanarahana ireo mari-pamantarana ireo nefa tsy misy tombantombana tsara dia saika miharatsy hatrany hatrany. Ny default dia nofidina mifototra amin'ny mombamomba ny tena izy, ary izy ireo dia maneho toerana mahafinaritra ho an'ny ankamaroan'ny enta-mavesatra. Raha tsy manana porofo mafonja avy amin'ny mombamomba ny famokarana ianao fa ny malloc overhead dia tavoahangin-tsolika - ary norefesinao ny fiantraikan'ny fanovana nataonao - avelao irery ny default. Ny fanatrarana aloha loatra ny mpizara dia endrika tsy misy dikany indrindra amin'ny fiharatana yak izay nandany ora ara-teknika tsy tambo isaina noho ny tombontsoa azo tsinontsinona.
Inona no ampianarin'ity antsika momba ny fandrindrana ny rafitra
Ny mistery 72 KB momba ny fizarana voalohany dia lesona momba ny sosona abstraction. C++ dia manome anao ny illusion fa new intmanome 4 bytes. Milaza izany ny fenitry ny fiteny. Milaza izany ny modely ara-tsainao. Fa eo anelanelan'ny kaodinao sy ny fitaovana dia misy rafitra be pitsiny — ny C++ runtime, ny C library allocator, ny kernel virtoaly memory subsystem, ary ny hardware an'ny MMU sy TLB — samy manampy ny fitondran-tenany, ny fanatsarana ary ny overhead.
Tsy lesoka izany. Izy io no fototry ny rindrambaiko rafitra. Ny sosona tsirairay dia misy hamahana olana tena izy: misy ny mpizara ka tsy mila manao antso an-tariby ho an'ny fizarana tsirairay ianao. Misy ny rafitra fitadidiana virtoaly ka tsy mila mitantana mivantana ny fitadidiana ara-batana ianao. Misy ny tompon'andraikitra amin'ny pejy ka atao amin'ny fomba kamo sy mahomby ny fitadidiana. Ny sosona tsirairay dia mivarotra mangarahara kely ho an'ny fampandehanana sy fanamorana be dia be.
Ireo mpamorona izay manangana rafitra azo itokisana sy mahomby indrindra dia ireo izay mahatakatra ireo sosona ireo — tsy hoe mila mieritreritra an'izany foana izy ireo, fa rehefa misy zavatra tsy ampoizina (toy ny fanomezana 72 KB mistery), dia manana modely ara-tsaina izy ireo mba hahatakarana ny antony. Na manangana rafitra ara-barotra amin'ny fotoana tena izy ianao, na motera lalao, na sehatra fandraharahana manompo mpampiasa an'arivony, ny fahaizana manjohy hevitra momba ny tena ataon'ny kaodinao eo amin'ny ambaratongan'ny rafitra no mampisaraka ireo mpamorona mahay amin'ireo tsy manam-paharoa. Ny 72 KB dia tsy bibikely. Ny mpizara anao no manao ny asany amim-pahakingana.
Amboary anio ny OS orinasanao
Avy amin'ny freelancer ka hatramin'ny masoivoho, Mewayz dia manana orinasa maherin'ny 138,000 miaraka amin'ny maody mitambatra 207. Manomboha maimaim-poana, manavao rehefa mitombo ianao.
Mamorona kaonty maimaim-poana →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