Pas më shumë se 4 vjet nga publikimi i përditësimit të kaluar, është e disponueshme gjenerata e bibliotekës për menaxhimin e memories jemalloc 5.3.1, e cila ofron një implementim alternatif të funksioneve malloc, e optimizuar për të minimizuar fragmentimin dhe për të punuar në sisteme me shumë procesorë. Për të zgjidhur problemet me bllokimet në sisteme me shumë bërthama, në jemalloc për çdo bërthamë CPU përdoret një zonë e veçantë për shpërndarjen e memories, gjë që lejon të arrihet shkallëzimi linear me rritjen e numrit të tërheqjeve.
Në qershor 2025, autori i projektit ndërpreu mbështetje dhe kaloi repositorin jemalloc në modalitetin arkiv, por një muaj më parë zhvillimi u rinovua nga kompania Meta, e cila përdor jemalloc në infrastrukturën e saj. Fillimisht, biblioteka u zhvillua për FreeBSD dhe përdoret në këtë OS si parazgjedhje që nga viti 2005. Kodi i bibliotekës është shkruar në C dhe shpërndahet nën licencën BSD.
Ndër ndryshimet:
- ĂshtĂ« realizuar funksioni pvalloc, i cili mund tĂ« jetĂ« i dobishĂ«m pĂ«r zĂ«vendĂ«simin e alokatorit tĂ« memories libc.
- Në ndërtimet për debugging është aktivizuar modaliteti i zb discovery-t të thirrjeve të dyfishta të funksionit free(). Për të konfiguruar madhësinë e stack-ut, brenda të cilit kryhet skanimi, është shtuar parametri debug_double_free_max_scan.
- ĂshtĂ« shtuar njĂ« mundĂ«si ndĂ«rtimi "--enable-pageid" pĂ«r tĂ« vendosur etiketat gjatĂ« mapimit tĂ« memories, duke pĂ«rdorur prctl me flamurin PR_SET_VMA. Pas aktivizimit, mapimi mund tĂ« monitorohet pĂ«rmes /proc//maps.
- ĂshtĂ« shtuar parametri "prof_bt_max", qĂ« lejon vendosjen e thellĂ«sisĂ« maksimale tĂ« stack-ut pĂ«r profilizimin.
- ĂshtĂ« shtuar mundĂ«sia e ndĂ«rtimit "--enable-force-getenv" pĂ«r tĂ« pĂ«rdorur nĂ« kod funksionin e zakonshĂ«m getenv() nĂ« vend tĂ« versionit tĂ« mbrojtur secure_getenv().
- ĂshtĂ« shtuar mundĂ«sia e ndĂ«rtimit "--disable-dss" pĂ«r tĂ« çaktivizuar pĂ«rdorimin e funksionit sbrk().
- ĂshtĂ« shtuar parametri "tcache_ncached_max" pĂ«r tĂ« kufizuar numrin e elementeve nĂ« cache tĂ« threads.
- ĂshtĂ« shtuar parametri "calloc_madvise_threshold" pĂ«r tĂ« konfiguruar pĂ«rdorimin e mekanizmit tĂ« kernelit madvise ose funksionit memset pĂ«r tĂ« zerozuar memorien e alokuar pĂ«rmes funksionit calloc.
- ĂshtĂ« shtuar mundĂ«sia e ndĂ«rtimit "--disable-user-config" pĂ«r tĂ« çaktivizuar ngarkimin e konfigurimeve nga skedari /etc/malloc.conf ose variabla e ambientit MALLOC_CONF.
- ĂshtĂ« shtuar parametri "process_madvise_max_batch" pĂ«r tĂ« kufizuar numrin e bllokimeve tĂ« memories pĂ«r çdo operacion batch tĂ« madvise.
- ĂshtĂ« shtuar parametri «disable_large_size_classes» pĂ«r tĂ« çaktivizuar algoritmin e ri tĂ« llogaritjes sĂ« madhĂ«sisĂ« sĂ« memorjes sĂ« alokuar, duke reduktuar kostot e menaxhimit pĂ«r alokimin e blloqeve mĂ« tĂ« mĂ«dha se 4 faqe memorje.
- Në utilitarin mallctl janë shtuar opsionet: opt.prof_bt_max, arena.<i>.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage dhe approximate_stats.active.
Burimi: opennet.ru
