Biblioteca de gestionare a memoriei jemalloc 5.3.1 este disponibilă

După 4 ani de la publicarea ultimei actualizări, este disponibilă versiunea 5.3.1 a bibliotecii de management al memoriei jemalloc, care oferă o implementare alternativă a funcțiilor malloc, optimizată pentru reducerea fragmentării și pentru a funcționa pe sisteme multiprocesor. Pentru a rezolva problemele de blocare pe sistemele multi-core, jemalloc folosește o zonă de alocare a memoriei izolată pentru fiecare nucleu CPU, ceea ce permite obținerea unei scalabilități liniare pe măsură ce numărul de fire de execuție crește.

În iunie 2025, autorul proiectului a oprit întreținerea și a mutat repository-ul jemalloc în modul de arhivare, dar acum o lună, compania Meta, care folosește jemalloc în infrastructura sa, a reluat dezvoltarea. Inițial, biblioteca a fost dezvoltată pentru FreeBSD și este utilizată implicit în acest sistem de operare din 2005. Codul bibliotecii este scris în C și este distribuit sub licența BSD.

Printre modificări:

  • A fost implementată funcția pvalloc, care poate fi utilă în înlocuirea alocatoarei de memorie libc.
  • În versiunile de depanare, a fost inclus un mod de detectare a apelului dublu al funcției free(). Pentru a ajusta dimensiunea stivei în cadrul căreia se desfășoară scanarea, a fost adăugat parametru debug_double_free_max_scan.
  • A fost adăugată opțiunea de compilare „—enable-pageid” pentru a eticheta maparea memoriei, folosind prctl cu flagul PR_SET_VMA. După activare, maparea poate fi urmărită prin /proc//maps.
  • A fost adăugat parametru „prof_bt_max”, care permite stabilirea adâncimii maxime a stivei pentru profilare.
  • A fost adăugată opțiunea de compilare „—enable-force-getenv” pentru a folosi în cod funcția obișnuită getenv() în locul funcției protejate secure_getenv().
  • A fost adăugată opțiunea de compilare „—disable-dss” pentru a dezactiva utilizarea funcției sbrk().
  • A fost adăugat parametru „tcache_ncached_max” pentru a limita numărul de elemente în cache-ul firelor de execuție.
  • A fost adăugat parametru „calloc_madvise_threshold” pentru a ajusta utilizarea mecanismului kernel madvise sau funcției memset pentru a inițializa memoria alocată prin funcția calloc.
  • A fost adăugată opțiunea de compilare „—disable-user-config” pentru a dezactiva încărcarea setărilor din fișierul /etc/malloc.conf sau din variabila de mediu MALLOC_CONF.
  • A fost adăugat parametru „process_madvise_max_batch” pentru a limita numărul de blocuri de memorie pentru fiecare operațiune batch madvise.
  • A fost adăugat parametrul „disable_large_size_classes” pentru a dezactiva noul algoritm de calcul al dimensiunii memoriei alocate, care reduce costurile suplimentare la alocarea blocurilor mai mari de 4 pagini de memorie.
  • Utilitarul mallctl a fost completat cu opțiuni: opt.prof_bt_max, arena.<i>.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage și approximate_stats.active.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster