• WEB DESIGN AGENCY

  • Sede Principale

    Multimedia Web

    Blog Studio Web

    Studio Web

    Sede a Venezia

    Web Agency Venezia

    Sede a New York

    Nyc Web Design

    Sede International

    Web Designer International

    Sito Demo One Page

    Spaghetti Web

    Landing page

    Savinus

  • smartphone

    Seguici sul tuo smartphone

  • web-designer-ancona
  • AGENZIA WEB

Home / News / Javascript e Garbage Collector | Javascript HTML.it

Javascript e Garbage Collector | Javascript HTML.it


Nel momento in cui si programmano applicazioni quanto a Javascript, capita fitto nel corso di “obliare” del dispersione della memorie, affidandosi alla “magica” abilità del browser (oppure anche se del insieme operativo, quanto a insediamento al schema applicativo – vedi Node.js) nel corso di gestirlo. Durante concretezza di sempre è di conseguenza, e come applicazioni più volte complesse capita nel corso di doversi elemosinare venga gestito questo portamento.

Seguendo alcune idee discusse quanto a un post di Steve Hanov, è effettuabile assodare se in accordo un cosa Javascript è nazione “sfinito” (e per questo rimosso dalla memorie) dal garbage collector del browser. Sciaguratamente, il maniera funziona a causa di Chrome ed altri browser, obiezione a causa di Firefox. Rimane nondimeno un interesse ordigno nel corso di quesito e debug.

Il pandette

Il pandette le quali segue sfrutta la insieme WeakMap come unire 1 GB nel corso di memorie ad un purchessia nuovo cosa. Nel lampo quanto a cui quest’moderno viene eliminato dal garbage collector, verrà rimosso anche se il GB socio ad essi. Sfruttando la evenienza (elemosina attraverso Chrome) nel corso di assodare la profusione nel corso di memorie usata, è effettuabile se in accordo l’cosa le quali ci interessa è nazione affrancato oppure .

Durante inserimento a nella misura che motto, si noterà la prontezza nel corso di un timeout le quali agisce tutti 10 secondi. La motivo nel corso di ciò è dovuta al costituito le quali Chrome esegue il garbage collector ad intervalli più volte oppure regolari, infatti nel corso di 10 secondi.


/** Determines if an object is freed
@param obj is the object of interest
@param freeFn is a function that frees the object.
@returns a promise that resolves to {freed: boolean, memoryDiff:number}
@author Steve Hanov <[email protected]>
*/
function isObjectFreed(obj, freeFn) {
  return new Promise( (resolve) => {
    if (!esibizione.memory) {
      throw new Error("Browser not supported.");
    }
    // When obj is GC'd, the large array will also be GCd and the impact will
    // be noticeable.
    const allocSize = 1024*1024*1024;
    const wm = new WeakMap([[obj, new Uint8Array(allocSize)]]);
    // wait for memory counter to update
    setTimeout( () => {
      const before = esibizione.memory.usedJSHeapSize;
      // Free the memory
      freeFn();
      // wait for GC to run, at least 10 seconds
      setTimeout( () => {
        const diff = before - esibizione.memory.usedJSHeapSize;
        resolve({ 
          freed: diff >= allocSize, 
          memoryDiff: diff - allocSize
        });
      }, 10000);
    }, 100);
  });
}
let foo = {:1};
isObjectFreed(foo, () => foo = null).then( (result) => {
  document.write(`Object GCd:${result.freed}, ${result.memoryDiff} bytes freed`)
}, (error) => {
  document.write(`Error: ${error.message}`)
})

L’ nel corso di 1 GB nel corso di memorie all’cosa attraverso , nasce dalla occorrenza nel corso di dover comando assodare una difformità significativa nella profusione nel corso di memorie usata. Senza discussione questo “trucchetto”, la difformità sarebbe significativa, e l’scomposizione nel corso di memorie diventerebbe complicata (se in accordo improbabile).

È sottolineare le quali è sì l’chimera “scialacquare” 1 GB nel corso di memorie quanto a un camera nel corso di lavorazione. Tuttavia, colui in questo momento approvazione rimane un interesse applicabile quanto a stadio nel corso di quesito e debug, particolarmente come applicazioni le quali utilizzano oggetti nel corso di scontroso direzione, “immersi” quanto a framework React, Vue.js oppure Angular.

Provenienza: Steve Hanov



Source link

Send this to a friend