Autor Zpráva
Suta
Profil
O únicích paměti v prohlížečích jsem toho přečetl již hodně. Snažím se dodržovat všechny osvědčené postupy. S tímto si však nevím rady:

Jak docílit toho, aby prohlížeče nezabíraly paměť díky objektům, které jsou dočasně vytvořeny, vloženy do stránky a poté odstraněny? Jako "praktický" příklad uvedu např. vlastní konzoli, v níž zobrazuji vlastní informace v průběhu používání webové stránky (lépe však webové aplikace). Takových objektů je po určitém čase i několik tisíc, a prohlížeče se různí v tom, jak dokáží (a zda-li vůbec) paměť uvolnit při spuštění "čističe". Např. Chrome mi paměť níže uvedených "odebraných" objektů neuvolní ani při refreshi stránky, je třeba zavřít prohlížeč. Unikla mi některá ze základních věcí?

Zde je příklad, prosím o vaše postřehy.

var x = document.createElement("div");

x.appendChild(document.createTextNode("text"));

document.body.appendChild(x);

document.body.removeChild(x);

x = null;
Darker
Profil
Nedělej x=null ale delete x. Pak se data časem zapomenou. Respektive, paměť bude označena za prázdnou.
Chamurappi
Profil
Reaguji na Darkera:
To nebude fungovat, ne? Naopak přiřazení něčeho jiného (třeba null) by fungovat mělo.


Reaguji na Sutu:
Např. Chrome mi paměť níže uvedených "odebraných" objektů neuvolní ani při refreshi stránky
To, že paměť může uvolnit, neznamená, že ji sám hned uvolní.
V Exploreru jde (tuším) přímo ze skriptu vyzvat k činnosti garbage collector, jinde nevím.
_es
Profil
Suta:
Chrome mi paměť níže uvedených "odebraných" objektů neuvolní ani při refreshi stránky, je třeba zavřít prohlížeč. Unikla mi některá ze základních věcí?
Neuchovávaš niekde odkaz na otvorené okno?
Chrome tuším necháva pri zavrení okna pri zachovaní odkazu naň všetky objekty toho okna.
Ostané prehliadače všetky vlastnosti a premenné okna zrušia a nastavia vlastnosť closed na true.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: