programmatūra · 6 min · 19.07.2026

Chrome 150 DevTools ļauj AI aģentam pašam uzņemt heap snapshot un atrast atmiņas noplūdi

Chrome 150 versijā izstrādātāju rīki ļauj AI aģentam pašam uzņemt V8 kaudzes momentuzņēmumu (heap snapshot) un salīdzināt vairākus, lai norādītu, kur noplūst JavaScript atmiņa. Līdz šim aģents to nemācēja — kad tika lūgts atrast noplūdi, tas parasti ieteica cilvēkam pašam atvērt DevTools atmiņas paneli.

Izmaiņu apraksts parādījās Chrome for Developers emuārā par Chrome 150. Papildus atmiņas atkļūdošanai versija ievieš CSS @container un @function noteikumu tiešu rediģēšanu, kā arī vairākas drošības izmaiņas konsolē un ierakstīšanas rīkā.

Kas mainījies atmiņas atkļūdošanā

Atmiņas noplūde pārlūkā rodas, kad lapa notur norādes uz objektiem, kuri vairs nav vajadzīgi — piemēram, notikuma klausītāju, ko neviens nenoņem, vai slēgumā (closure) iesprūdušu DOM elementu. Vienlapas lietotnē, kur lietotājs stundām nepārlādē lapu, šādi objekti krājas, līdz cilne kļūst gausa vai avarē. Tos palīdz atrast momentuzņēmumu salīdzināšana.

Momentuzņēmuma .heapsnapshot fails ir liels — tajā ir katrs JavaScript objekts lapā konkrētā brīdī. Ielasīt to tieši valodas modelī nav iespējams: fails pārsniedz konteksta ietilpību. Tieši tāpēc aģenti šo failu līdz šim apgāja.

Risinājums ir atsevišķi rīki, kas failu apstrādā ārpus modeļa un atdod tikai kopsavilkumu. Projekts chrome-devtools-mcp pievienojis prasmi memory-leak-debugging ar rīku kopu: take_heapsnapshot uzņem momentuzņēmumu, get_heapsnapshot_summary atdod augsta līmeņa kopsavilkumu, compare_heapsnapshots parāda starpību starp diviem, bet get_heapsnapshot_class_nodes un get_heapsnapshot_retainers ļauj ieskatīties konkrētās aizdomīgās klasēs. Kā rezerves variantu prasme min memlab — atsevišķu Node.js rīku, ar kuru failus salīdzina komandrindā.

AI aģenti īsti nezina, ko iesākt ar heap snapshot, un iesaka cilvēkam atvērt DevTools logu, lai to analizētu, — tā problēmu formulēja chrome-devtools-mcp izstrādes pieteikums, kas šo prasmi ierosināja.

Aģents ar pārlūku sarunājas caur Model Context Protocol (MCP): chrome-devtools-mcp ir serveris, ko Chrome komanda uztur atsevišķi no pārlūka un kas rīkus atklāj jebkuram MCP klientam — Claude Code, Cursor vai citam redaktoram. Momentuzņēmuma rīki tur nonāca pēc pieteikuma šā gada februārī, kad kļuva skaidrs, ka bez tiem aģents atmiņas jautājumu vienkārši nodod atpakaļ cilvēkam.

Kā strādā trīs momentuzņēmumu metode

Prasme apraksta konkrētu darba gaitu. Vispirms uzņem bāzes momentuzņēmumu lapas sākuma stāvoklī. Tad atkārto lietotāja darbību, kas varētu noplūdināt atmiņu — piemēram, atver un aizver dialogu — un uzņem otro. Beigās atceļ darbību, gaida, kamēr atmiņa būtu jāatbrīvo, un uzņem trešo.

Lai noplūdi būtu vieglāk saskatīt, darbību atkārto desmit reizes: neliela noplūde vienā ciklā pazūd trokšņos, bet desmitkārtīga uzkrājas līdz redzamam apjomam. Pēc tam aģents sāk ar kopsavilkuma līmeņa salīdzinājumu un tikai tad ieskatās konkrētās klasēs, kur objektu skaits pieaug un neatgriežas sākotnējā vērtībā. Tā ir tā pati metode, ko pieredzējuši izstrādātāji izmanto manuāli — tagad to izpilda pati rīku ķēde. Prasmes komplektā ir arī gatavs Node.js skripts compare_snapshots.js, ko izmanto tad, ja MCP rīki nav pieejami un failus salīdzina ar memlab.

Chrome 150 arī pievieno deviņus jaunus logrīkus AI palīga pārskatiem. Tie rāda datus no Lighthouse, Network, Sources un Performance paneļiem, tāpēc aģents lēmumus var balstīt uz veiktspējas un tīkla mērījumiem, nevis tikai uz lapas HTML.

Rīks, kas meklē noplūdes, pats noplūda

chrome-devtools-mcp pašam nesen bija atmiņas noplūde. Martā reģistrētajā pieteikumā #1192 izstrādātājs aprakstīja, ka serveris režīmā --autoConnect pēc aptuveni desmit dīkstāves stundām aizņēma 1661 MB operatīvās atmiņas un veicināja macOS kodola paniku, kad procesu koks izsmēla 8,4 GB swap. Rīks, kas paredzēts noplūžu meklēšanai, tātad izrādījās labs pārbaudes objekts pats savai metodei.

CSS @container un @function tagad rediģējami tieši

Stilu panelī tagad var mainīt konteinera vaicājuma nosaukumu un nosacījumus @container noteikumā, neatverot avota failu. Pievienots pilns atbalsts pielāgotu @function noteikumu rakstīšanai — tas ir salīdzinoši jauns CSS mehānisms, kas ļauj definēt funkciju ar nosaukumu un argumentiem un izsaukt to citur stilu lapā, līdzīgi kā mainīgo caur var(). Iespēja to rediģēt tieši pārlūkā nozīmē, ka izstrādātājs var pamēģināt vērtības un tikai tad pārnest tās kodā.

Sīkāka izmaiņa skar sarakstu stilus: list-style-type īpašībai tagad ir koda pabeigšana, kas piedāvā atbilstošās @counter-style definīcijas. Vēl viens jauns iestatījums ļauj sakļaut noteikumus, kas konkrētajam elementam neko neietekmē, lai stilu sarakstā paliktu tikai tas, kas patiešām darbojas.

Drošības izmaiņas konsolē un Recorder rīkā

Live Expressions laukam konsolē pievienots brīdinājuma dialogs pret pašuzbrukumu (self-XSS) — gadījumu, kad lietotāju pierunā ielīmēt svešu kodu konsolē. Recorder panelī ieviesti stingri navigācijas atļauju saraksti, kas neļauj ierakstam piekļūt augsta līmeņa lapām. Tīkla aizstāšanas (network override) funkcija tagad ievēro paplašinājumu runtime_blocked_hosts ierobežojumus, un @font-face noteikumu ģenerēšana pārrakstīta caur CSSStyleSheet saskarni, lai novērstu CSS iepludināšanu.

Paralēli iznācis rīku komplekts DevTools for Agents 1.4.0. Tas pievieno Chrome paplašinājumu pārvaldību, iesaiņo aģentu prasmes npm pakotnē un pievieno eksperimentālu atbalstu TOON formātam, ar ko samazina žetonu patēriņu. Pilns izmaiņu saraksts ir DevTools laidienu piezīmēs.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie