Memória szivárgás elkerülése JavaScriptben
Amikor JavaScript fejlesztésre adjuk a fejünket, nem is gondoljuk, hogy szigorúan figyelnünk kell a meghívott függvények sebességére vagy méginkább a memória szivárgások előfordulására. Mint Jano korábbi bejegyzésében megmutatta, érdemes a hívott függvények optimalizálására, és a hívásuk gyakoriságára is odafigyelni. Tegnap pedig Jack Solocum közölt blog bejegyzést arról, hogy milyen alapvető módokon kerülhetjük el a memória szivárgást. A 3 Easy Steps to Avoid JavaScript Memory Leaks című bejegyzést érdemes elolvasni.
■
thx, kimaradt belőle a Drip-t az IE Leak Detektor
üdv t
ui: egyébként jön itt is rendesen
[+] [leaked object] (2ff2c88, http://weblabor.hu/themes/azigazi/layout.js, 69-70) = function _navigationStopTimer() {
clearInterval(navigationHoverInterval);
}
[ ] prototype (2ddc3d0) = [object Object]
[+] [leaked object] (34733a0, http://weblabor.hu/themes/azigazi/bbeditor.js, 165-165) = function (event) {
return (controlsKeyHandler(this, event));
}
[ ] prototype (2ddc488) = [object Object]
[+] [leaked object] (34733b0, http://weblabor.hu/themes/azigazi/bbeditor.js, 166-166) = function () {
controls_timeout = setTimeout("removeControl(document.getElementById('" + this.id + "'))", 500);
}
[ ] prototype (2ddc4a0) = [object Object]
[+] [leaked object] (34733b8, http://weblabor.hu/themes/azigazi/bbeditor.js, 167-167) = function () {
attachControl(this);
}
[ ] prototype (2ddc600) = [object Object]
[+] [leaked object] (2ff2c80, http://weblabor.hu/themes/azigazi/layout.js, 56-66) = function _navigationStartTimer(e) {
var event = e;
_navigationStopTimer();
if (typeof event == "undefined") {
event = window.event;
}
if (typeof event.target != "undefined") {
navigationHoverSource = event.target;
} else {
if (typeof event.srcElement != "undefined") {
navigationHoverSource = event.srcElement;
} else {
return (true);
}
}
navigationHoverInterval = setInterval("_navigationHover()", 300);
return (false);
}
[ ] prototype (2ddc678) = [object Object]
nemnéztem meg miez csak jelzem :)
csorgás
1, bár az egyértelmű, hogy van szivárgás, én 8-10 órányi böngészés és fejlesztés után szoktam újraindítani a Maxthont, ami IE-re épül; viszonylag sok oldalt nyitok meg és használok egyszerre; egy átlagos felhasználó ennek a töredékével "beéri", jóval kevesebb ideig,
2, kb. 2007 elejétől várható az IE6-ok lecserélése, az IE7 elterjedése, amit már folyamatosan fejlesztenek és javítják az ilyen hibákat.
Ezt kb. olyannak tartom, mint amikor IE-re optimalizálnak egy oldalt, annyi eltéréssel, hogy itt persze mindenhol lefut jól, de egy sor - később - fölösleges kódot tartalmaz.
ezt most kinek írtad :S egyébként igazad van
üdv t
válasz
De firefoxra is ugyanígy igaz, amit írtam, sőt... : )
hát izé
Amellett persze, hogy természetesen törekedni kell a memory-leak-ek kiküszöbölésére.
Amúgy nem tudom, hogy ez a memory-leak detektáló cucc mennyire megbízható.
Van valakinek módszere, hogy hogyan lehet ezt mérni?
sajna, még csak ott tartok
http://www.quirksmode.org/blog/archives/coding_techniques/memory_leaks/index.html
itt találsz ilyesmi cikkeket a témáról ( blogsearch.google.com -ról nem beszélve, majd számolj be :) )
üdv t
ProcessExplorer
prototype memory leak
IE alatt stabil 50mega a memóriafoglalása, a Firefox meg felteker ~200-300 megáig. A már ismert képekkel kapcsolatos bug miatt. Ebben meg ugye a smiley-k erősen jelen vannak. Én azt várom, mikor javítják végre ki azt a részét a FF-nak. :(
Szóval én nem tapasztaltam olyat, hogy a Prototype egyértelműen, minden böngésző alatt memory leak-elne, ez persze nem zárja ki azt, hogy mégis így van. :)