No ke aha he 72 KB mau ka mahele mua C++ (m)?
Nā Manaʻo
Mewayz Team
Editorial Team
Ka Pohihihi Ma hope o kāu Hoʻokaʻawale mua C++
Kākau ʻoe i kahi papahana C++ maʻalahi. Hoʻokahi int hou. ʻEhā paita. Hoʻopau ʻoe i ka stracea i ʻole kāu mea hoʻomanaʻo hoʻomanaʻo punahele, aia i laila - ua noi ʻia kāu kaʻina hana ma kahi o 72 KB mai ka ʻōnaehana hana. ʻAʻole 4 bytes. ʻAʻole 64 bytes. He 72 KB piha. Inā ua nānā ʻoe i kēlā helu a noʻonoʻo inā he wahaheʻe kāu mea hana iā ʻoe, ʻaʻole ʻoe wale nō. ʻO kēia ʻano ʻano ʻano ʻano ʻē kekahi o nā nīnau i nīnau pinepine ʻia ma waena o nā mea hoʻomohala C++ e ʻeli ana i loko o ka hoʻomanaʻo internals no ka manawa mua, a ʻo ka pane e lawe iā mākou i kahi huakaʻi hoihoi ma nā papa e noho ana ma waena o kāu code a me ka hāmeʻa maoli.
He aha kāu e kāhea aku ai i mea hou
No ka hoʻomaopopo ʻana i ka helu 72 KB, pono ʻoe e ʻimi i ke kaulahao hoʻokaʻawale piha. Ke hoʻokō nei kāu code C++new int, unuhi ka mea hōʻuluʻulu i ke kelepona i operator new, ka mea ma ka hapa nui o nā ʻōnaehana Linux e hāʻawi i ka mallocmai glibc. Akā mallocʻaʻole e nīnau pololei i ka kernel no 4 bytes o ka hoʻomanaʻo. Hoʻohana ka kernel i nā ʻaoʻao - maʻamau 4 KB ma x86_64 - a ʻo ke kumukūʻai o ke kelepona ʻōnaehana he nui loa e pili ana i kahi komo hoʻomanaʻo maʻalahi. ʻO ke kāhea ʻana i brk() a i ʻole mmap() no kēlā me kēia hoʻokaʻawale ʻana i kēlā me kēia kanaka, e hoʻopau ʻia kekahi papahana mea ʻole.
Akā, ka mea hoʻokaʻawale hoʻomanaʻo o glibc - kahi hoʻokō i kapa ʻia ʻo ptmalloc2, ʻo ia iho i iho mai i kā Doug Lea's classic dlmalloc - hana ma ke ʻano he middleman. Noi ʻo ia i nā poloka hoʻomanaʻo nui mai ka kernel i mua, a laila kālai iā lākou i mau ʻāpana liʻiliʻi e like me ka pono o kāu polokalamu. ʻO kēia ke kumu nui o kāu hoʻokaʻawale 4-byte mua e hoʻoulu i kahi noi nui aku i ka ʻōnaehana hana. ʻAʻole hoʻopau ka mea hoʻokaʻawale. He hoʻolālā.
Ke wehe ʻana i ka 72 KB: Kahi e hele ai nā Bytes
ʻO ka hoʻokaʻawale mua ʻana mai nā ʻāpana ʻokoʻa e pono e hoʻomaka ka wā holo ma mua o ka hāʻawi ʻana iā ʻoe i hoʻokahi byte o ka hoʻomanaʻo hoʻohana. ʻO ka hoʻomaopopo ʻana i kēlā me kēia ʻāpana e wehewehe i ke kumu e pae ai ka helu ma laila.
ʻO ka mea mua, hoʻomaka ka malloc o glibc i ka arena nui — ka ʻōnaehana mālama puke mua e hahai ana i nā ʻāpana āpau ma ka pae nui. Loaʻa i kēia pāʻani ka metadata no ka puʻu, nā kuhikuhi papa inoa manuahi, a me nā hale bin no nā ʻāpana like ʻole. Hoʻonui ka mea hoʻokaʻawale i ka hoʻomaha o ka papahana ma sbrk(), a mālama ʻia ka hoʻonui mua ʻia e kekahi ʻāpana kūloko i kapa ʻia M_TOP_PAD, ʻo ia ka 128 KB o ka padding. Eia nō naʻe, hoʻoponopono ʻia ka noi mua maoli no ka hoʻopololei ʻana i ka ʻaoʻao a me ke kūlana hoʻomaha e kū nei, a ʻo ia ka mea e loaʻa pinepine ai i kahi noi mua liʻiliʻi - maʻamau e pae kokoke ana i kēlā helu 72 KB ma kahi kaʻina hana hou.
Ka lua, mai ka glibc 2.26, hoʻomaka ka mea hoʻokaʻawale i thread-local cache (tcache) ma ka hoʻohana mua ʻana. Aia i loko o ka tcache he 64 bins (hoʻokahi no ka papa liʻiliʻi hoʻokaʻawale), hiki i kēlā me kēia mea ke paʻa i 7 mau puʻupuʻu huna. ʻO ka tcache_perthread_struct ponoʻī e hoʻopau ma kahi o 1 KB, akā ʻo ka hana o ka hoʻomaka ʻana e hoʻomaka i ka hoʻonohonoho ʻana o ke kahua ākea. ʻO ke kolu, ua hana mua ka C++ runtime i nā hoʻokaʻawale ma mua o kāu main() a hiki i ka holo ʻana - nā mea hana static, iostream buffer initialization no std::couta me nā hoaaloha, a me ka hoʻonohonoho ʻāina āpau e kōkua i kēlā me kēia kapuaʻi puʻu mua.
ʻO ka Pūnaehana Arena a me ke kumu i akamai ai ka hoʻokaʻawale mua ʻana
ʻO ka hoʻoholo ʻana e hoʻokaʻawale mua i kahi puʻupuʻu nui o ka hoʻomanaʻo ma mua o ka noi ʻana iā ia ʻāpana ʻaʻole ia he ulia pōpilikia o ka hoʻokō. ʻO ia kahi kālepa ʻenehana noʻonoʻo i hoʻokumu ʻia i nā makahiki he mau makahiki o ka ʻike hoʻonohonoho ʻōnaehana. ʻO kēlā me kēia kelepona ʻana iā brk() a i ʻole mmap() e pili ana i ka hoʻololi pōʻaiapili mai kahi mea hoʻohana a i ke kikowaena kernel, ka hoʻololi ʻana i nā palapala palapala hoʻomanaʻo virtual o ke kaʻina hana, a me nā hōʻano hou o ka papa ʻaoʻao. Ma nā lakohana hou, ʻo ke kelepona ʻōnaehana hoʻokahi ke kumukūʻai ma kahi o 100-200 nanokekona - he mea liʻiliʻi ma ke kaʻawale, pōʻino ma ka nui.
E noʻonoʻo i kahi papahana e hoʻokaʻawale liʻiliʻi i 10,000 i ka wā hoʻomaka. Me ka ʻole o ka hoʻokaʻawale ʻana, ʻo ia ke ʻano he 10,000 kelepona ʻōnaehana, ke kumu kūʻai ma kahi o 1-2 milliseconds o ke poʻo maʻemaʻe. Me ka hoʻokaʻawale ʻana i ka arena, hoʻomaka ka hoʻokaʻawale mua i kahi kelepona ʻōnaehana hoʻokahi, a lawelawe ʻia nā ʻāpana 9,999 ma hope o nā wahi mea hoʻohana ma o ka pointer arithmetic a me ka papa inoa pili - e lawe ana kēlā me kēia ma kahi o 10-50 nanoseconds. ʻAʻole maopopo ka makemakika: lanakila ka hoʻokaʻawale mua ʻana ma ke kauoha o ka nui.
ʻO ka 72 KB āu e ʻike ai ma kāu hoʻokaʻawale mua ʻaʻole i pau ka hoʻomanaʻo - he hoʻopukapuka hana. Ke koho nei ka mea hoʻokaʻawale e hoʻonui koke aku kāu polokalamu, a ma kahi kokoke i kēlā me kēia hiʻohiʻona maoli, e uku maikaʻi ʻia kēlā pili. ʻO ke kumu kūʻai o nā wahi kikoʻī kikoʻī i hoʻohana ʻole ʻia, ʻaʻole ia ma nā ʻōnaehana 64-bit hou.
Hoʻomanaʻo Virtual vs. Hoʻomanaʻo Kino: No ke aha he mea ʻole ia
ʻO kahi hopohopo maʻamau i waena o nā mea hoʻomohala e ʻike i kēia ʻano no ka manawa mua ʻo ia ka ʻōpala waiwai. Inā makemake au i 4 bytes, no ke aha e ʻai ai kaʻu polokalamu i ka 72 KB? ʻO ka ʻike koʻikoʻi ʻo iaʻaʻole hoʻomanaʻo kino ka hoʻomanaʻo virtual. Ke hoʻolōʻihi ʻo glibc i ka hoʻomaha o ka papahana ma 72 KB, hoʻonui ka kernel i nā palapala palapala hoʻomanaʻo virtual o ke kaʻina, akā ʻaʻole ia e hoʻihoʻi koke i kēlā mau ʻaoʻao me ka RAM kino. Hoʻokaʻawale ʻia nā ʻaoʻao kino maoli ma ke koi ʻana ma o hewa ʻaoʻao — aia wale nō ke kākau kāu polokalamu i kahi helu kikoʻī e hāʻawi ka kernel i kahi ʻaoʻao hoʻomanaʻo iā ia.
💡 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 →'O ia ho'i, 'oiai e pi'i ana ka nui virtual o kāu ka'ina hana i ka 72 KB, 'o kona ka nui ho'onohonoho noho'ana (RSS) — ka nui o ka RAM kino i ho'opau maoli 'ia — ho'onui 'ia e nā 'ao'ao āu i pā maoli ai. No ka new int hoʻokahi, ʻo ia ka mea maʻamau hoʻokahi ʻaoʻao 4 KB, a me nā ʻaoʻao ʻē aʻe e noho ai ka metadata arena. Aia ke koena virtual space ma laila, mākaukau no ka hoʻohana ʻana, ʻaʻohe kumu kūʻai akā he wahi helu wahi — nona ka 128 TB ma kahi ʻōnaehana Linux 64-bit.
He mea koʻikoʻi kēia ʻokoʻa i ka wā e hoʻopaʻa inoa a nānā ana i nā noi hana. Inā ʻoe e kūkulu nei i nā polokalamu e pono ai ke hahai i ka hoʻohana waiwai maoli - inā he SaaS backend, microservice, a i ʻole kahi pipeline analytics e like me nā mea e holo ana ma nā paepae e like me Mewayzno nā hana ʻoihana - pono ʻoe e nānā mau i ka RSS ma mua o ka nui virtual. Hiki i nā mea hana e like me /proc/[pid]/smaps, valgrind --tool=massif, a me pmap ke hāʻawi iā ʻoe i nā kapuaʻi hoʻomanaʻo kino kūpono ma mua o ka hoʻopunipuni ʻana i nā helu hoʻomanaʻo virtual.
Pehea ka lawelawe ʻana o nā mea hoʻokaʻawale ʻokoʻa i ka ʻāpana mua
He kiko'ī ka helu 72 KB i ka ptmalloc2 o glibc. Hana nā mea hoʻokaʻawale ʻē aʻe i nā kālepa like ʻole, a ʻokoʻa ka hoʻokaʻawale mua ʻana ma luna. He mea nui ka hoʻomaopopo ʻana i kēia mau ʻokoʻa i ke koho ʻana i kahi mea hoʻokaʻawale no nā noi pili i ka hana.
- jemalloc (hoʻohana ʻia e Facebook, FreeBSD) — Ke hoʻohana nei i kahi hoʻolālā pānaʻi ʻoi aku ka nui me nā huna huna kūloko. ʻOi aku ka kiʻekiʻe o ke poʻo mua (maʻa mau 200+ KB) akā hāʻawi i ka hana ʻoi aku ka maikaʻi o nā loina lehulehu ma muli o ka hoʻemi ʻana i ka paio laka.
- tcmalloc (Google's Thread-Caching Malloc) — Hoʻokaʻawale i kahi huna huna no kēlā me kēia thread ma kahi o 2 MB ma ke ʻano paʻamau, me ka hoʻokaʻawale mua ʻana. ʻOi aku ka kiʻekiʻe o ke poʻo mua, akā wikiwiki loa nā ʻāpana liʻiliʻi ma hope.
- musl libc's malloc — Hoʻohana i kahi hoʻolālā maʻalahi ma muli o mmap no nā hoʻokaʻawale ʻana. ʻOi aku ka liʻiliʻi o ke poʻo mua (pinepine ʻo 4 KB wale nō no ka hoʻokaʻawale ʻana), akā ʻoi aku ka kiʻekiʻe o ke kumukūʻai no ka hoʻokaʻawale ʻana ma muli o ke kelepona ʻana o ka ʻōnaehana.
- mimalloc (Microsoft) — Hoʻohana i ka hoʻokaʻawale ʻana i ka māhele me nā ʻāpana 64 MB. Hoʻomaka ka hoʻokaʻawale mua ʻana i kahi hoʻopaʻa inoa virtual 64 MB (me ka liʻiliʻi o ke koʻikoʻi kino), wahi kūʻai wahi kūʻai no ka wahi kūʻokoʻa a me ka hana.
E pili ana ka koho ma waena o kēia mau mea hoʻokaʻawale i kāu haʻahaʻa hana. No nā polokalamu kikowaena lōʻihi me ka hoʻokaʻawale ʻana i nā kaula he nui, ʻoi aku ka maʻamau o jemalloc a i ʻole tcmalloc i ka hana paʻamau o glibc. No nā ʻōnaehana hoʻokomo i hoʻopaʻa ʻia i ka hoʻomanaʻo, ʻoi aku ka maikaʻi o ke ala maʻalahi o musl me ka haʻahaʻa. No ka hapa nui o nā papa kuhikuhi a me nā polokalamu kikowaena, ʻo ka ptmalloc2 o 72 KB ka poʻo mua e hōʻike ana i kahi paʻamau kūpono e hana maikaʻi me ka hoʻolohe ʻole.
Ka hoʻopololei ʻana i ke ʻano hoʻokaʻawale mua
Inā pilikia maoli ka 72 KB ma luna o ke poʻo mua no kāu hihia hoʻohana — malia paha ke hoʻopuka nei ʻoe i mau kaukani o nā kaʻina hana pōkole, e hāʻawi ana kēlā me kēia i ka liʻiliʻi o ka hoʻokaʻawale ʻana - hāʻawi ʻo glibc i kekahi mau mele ma o mallopt() a me ka ʻohana MALLOC_ o nā ʻano hoʻololi kaiapuni.
Na ka palena M_TOP_PAD e hoʻomalu i ka nui o ka hoʻomanaʻo hou a ka mea hoʻokaʻawale e noi ai ma mua o ka mea e pono koke ai. ʻO ka hoʻonohonoho ʻana iā 0 me mallopt(M_TOP_PAD, 0) e ʻōlelo i ka mea hoʻokaʻawale e noi wale i nā mea e pono ai, e hōʻemi nui ana i ka overhead mua. Mālama ka ʻāpana M_MMAP_THRESHOLD i ka nui ma luna aʻe e hoʻohana ai nā ʻāpana mmap ma kahi o ke kahua. Mālama ka M_TRIM_THRESHOLD ke hoʻihoʻi ʻia ka hoʻomanaʻo i ka OS. A mai ka glibc 2.26, hiki i ka glibc.malloc.tcache_counta me glibc.malloc.tcache_max nā mele kani iā ʻoe ke hoʻomalu i ka hana cache thread.
Akā naʻe, he ʻōlelo akahele: ʻo ka hoʻopaʻa ʻana i kēia mau ʻāpana me ka ʻole o ka hoʻopaʻa ʻana me ka makaʻala ʻaneʻane e ʻoi aku ka hewa. Ua koho ʻia nā kuhi ma muli o ka hoʻolaha ʻana o ka honua maoli, a ke hōʻike nei lākou i kahi wahi momona no ka hapa nui o nā hana. Inā ʻaʻole i loaʻa iā ʻoe nā hōʻike ikaika mai ka hoʻolaha ʻana i ka hana ʻana he bottleneck ka malloc overhead - a ua ana ʻoe i ka hopena o kāu hoʻololi - waiho wale i nā mea paʻa. ʻO ka hoʻomaʻamaʻa mua ʻana o ka mea hoʻokaʻawale he ʻano hoʻopunipuni maoli nō ia o ka kahihi yak i hoʻopau i nā hola ʻenehana he nui no ka pōmaikaʻi ʻole.
He aha kēia e aʻo mai ai iā mākou e pili ana i ka papahana papahana
ʻO ka 72 KB mea pohihihi i hoʻokaʻawale mua ʻia, ma kona kumu, he haʻawina e pili ana i nā papa hoʻokaʻawale. Hāʻawi ʻo C++ iā ʻoe i ka hoʻopunipuni int houe hoʻokaʻawale i 4 bytes. Ke ʻōlelo nei ke kūlana ʻōlelo. Ke ʻōlelo nei kāu kumu hoʻohālike. Akā, ma waena o kāu code a me ka lako lako e noho ana he pūʻulu o nā ʻōnaehana maʻalahi - ka C++ runtime, ka C library allocator, ka kernel's virtual memory subsystem, a me ka MMU a me TLB o ka hardware - hoʻohui kēlā me kēia i kāna mau ʻano ponoʻī, nā koho, a me ke poʻo.
ʻAʻole kēia he hemahema. ʻO ia ke kiko holoʻokoʻa o nā polokalamu ʻōnaehana. Aia kēlā me kēia papa e hoʻoponopono i kahi pilikia maoli: aia ka mea hoʻokaʻawale no laila ʻaʻole pono ʻoe e hana i nā kelepona ʻōnaehana no kēlā me kēia hoʻokaʻawale. Aia ka ʻōnaehana hoʻomanaʻo virtual no laila ʻaʻole pono ʻoe e hoʻokele pololei i ka hoʻomanaʻo kino. Aia ka ʻaoʻao hoʻohana hewa no laila ua hana ʻia ka hoʻomanaʻo me ka palaualelo a me ka maikaʻi. Kūʻai kēlā me kēia papa i kahi kikoʻī liʻiliʻi no ka nui o ka hana a me ka maʻalahi.
ʻO nā mea hoʻomohala i kūkulu i nā ʻōnaehana hilinaʻi a me ka hana kiʻekiʻe loa, ʻo ia ka poʻe i hoʻomaopopo i kēia mau papa - ʻaʻole no ka mea pono lākou e noʻonoʻo mau iā lākou, akā no ka mea inā hiki mai kekahi mea i manaʻo ʻole ʻia (e like me kahi hoʻokaʻawale 72 KB pohihihi), loaʻa iā lākou ke kumu noʻonoʻo e maopopo ai ke kumu. Inā ʻoe e kūkulu nei i kahi ʻōnaehana kālepa manawa maoli, kahi mīkini pāʻani, a i ʻole kahi kahua pāʻoihana e lawelawe ana i nā tausani o nā mea hoʻohana, ʻo ka hiki ke noʻonoʻo e pili ana i ka hana maoli o kāu code ma ka pae ʻōnaehana ka mea e hoʻokaʻawale i nā mea hoʻomohala mākaukau mai nā mea ʻokoʻa. ʻAʻole ʻo ka 72 KB he bug. ʻO kāu mea hoʻokaʻawale e hana maikaʻi ana i kāna hana.
Kūkulu i kāu OS ʻoihana i kēia lā
Mai ka poʻe manuahi a hiki i nā keʻena, hoʻohana ʻo Mewayz i nā ʻoihana 138,000+ me 207 mau modula i hoʻohui ʻia. Hoʻomaka manuahi, hoʻomaikaʻi i kou wā e ulu ai.
Hana moʻokāki manuahi →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