mmofacts.com

Wo bleibt der Speicher ?

gepostet vor 16 Jahre, 11 Monate von Isogames
Hi,
ich bin grad etwas verwirrt. Vielleicht wisst ihr einen Rat...
Also, während ich so vor mich her programmiere, stürzt mir ein Programm ab und ich öffne den Task Manager um das Programm "abzuschiessen"...
Doch was muss ich da sehen? Der IE 7 belegt 400 MB Speicher !?
Hm ein Problem des IE ? - Nein, bei jeder Aktion wächst auch beim FF der Speicherverbrauch. -> Schlecht programmiert hab ich mir gedacht und angefangen in meinem Quellcode nach Speicherlecks zu forschen. Das der IE da Probleme hat ist ja bekannt, aber der FF?
Aus der Verzweiflung heraus, habe ich begonnen andere Ajax Anwendungen unter die Lupe zu nehmen - Und siehe da, ich bin nicht allein!
Beispiel: Ein Warenkorb der auf Mootools basiert:
Start: 34 MB
Nachdem ich 12 Items in den Warenkorb getan hab liegt der Speicherverbrauch bei 81 MB
Ich hab da jetzt einiges ausprobiert (2 Tage hat mich das gekostet), hab aber immer noch keine Erklärung dafür. Hab mich noch nie wirklich mit Speicherverbrauch bei der Webentwicklung beschäftigt, aber das kann ja kaum normal sein, oder?
@raufaser:
Wenn du dein Spiel (Die Dritte Macht) mit dem FF laufen lässt, wirst du auch einen zunehmenden Speicherhunger des FF feststellen.
gepostet vor 16 Jahre, 11 Monate von HSINC
lol, überschätz mal den ff nicht, der ist an manchen stellen genausoeine gurke wie der ie. nur ist er halt nicht von ms und deswegen muss er ja toll sein
gepostet vor 16 Jahre, 11 Monate von Isogames
Ich bin ein Windows Vista User der ersten Stunde und durfte mir dafür viele, sehr qualifizierte Kommentare anhören!
Mir gehts auch nicht drum, was der bessere Browser ist, aber ich teste meine Webanwendungen immer mit dem IE und dem FF
gepostet vor 16 Jahre, 11 Monate von Fobby
Mhja, das kenne ich. Hatte ein ähnliches Problem auch, mir konnte aber geholfen werden. Bei mir lag es am Framework (jQuery): Ich habe immerwieder content in eine Div-Box geladen und diesen Inhalt mit Eigenschaften (drag/drop) versehen. Ein simples .draggableDestroy(); an der richtigen Stelle hat wahre Wunder gewirkt.
Möglicherweise ist es bei dir etwas ähnliches.
gepostet vor 16 Jahre, 11 Monate von Isogames
Ja bei Prototype heisst die Funktion zwar Draggables.unregister() aber die hat zumindest beim FF geholfen. Leider interessiert es den IE nicht wirklich
gepostet vor 16 Jahre, 11 Monate von KoMtuR
Original von Isogames
Doch was muss ich da sehen? Der IE 7 belegt 400 MB Speicher !?
Hm ein Problem des IE ? - Nein, bei jeder Aktion wächst auch beim FF der Speicherverbrauch. -> Schlecht programmiert hab ich mir gedacht und angefangen in meinem Quellcode nach Speicherlecks zu forschen. Das der IE da Probleme hat ist ja bekannt, aber der FF?

Also seit der Version 2.0.0.10 frisst der Firefox wieder mehr Speicher. Was die da an Speicherlecks drin hab scheint nicht mehr normal zu sein. Hast du schonmal den Firefox 3 beta ausprobiert? Ist der Speicher immernoch so hoch?
gepostet vor 16 Jahre, 11 Monate von Isogames
Danke,
Drip hab ich gekannt, aber das sIEve ist ja noch ein wenig besser.
Das Programm zeigt mir tatsächlich ein Memory Leak an, nur kann ich es nicht wirklich nachvollziehen.
Laut dem Programm gibt es noch eine Referenz bei meinen IMG Tags die nicht gelöscht wird.
Damit ihr das nachvollziehen könnt, hier der Code:
Js Datei:

Event.observe(window, "load", init);
function init(){

loadequip();


}

function loadequip(){

new Ajax.Updater("draggables", "ajax/get_equip_item.php", {asynchronous: true, evalScripts: true});

}

function sendequip(type,item){
var params = "type="+type+"&item="+item
alert(params);
new Ajax.Request("ajax/set_equip_item.php", {
method: "post",
parameters: params,
asynchronous: true,
onComplete: afterEquipSending

});

return false;
}
function afterEquipSending(){
loadequip();
}
und hier die PHP Datei die nachgeladen wird:

// Get Item Data for the Inventory
require_once "../maincore.php";
$sql_items = dbquery("SELECT * FROM item WHERE item_user_id = ".$userdata['user_id']." AND item_item_type_id NOT IN (19,20,23,24,30,25,26,27,28,29) AND item_id NOT IN (".$userdata['user_helmet_equip'].",".$userdata['user_boots_equip'].",".$userdata['user_harnish_equip'].")");
while ($row = dbarray($sql_items))
{
echo "";
}

?>

$A($('draggables').getElementsByTagName('img')).each(
function(item)
{
var drag_draggables = new Draggable(item, { revert: true, ghosting: false } );

}
);

Kurze Erklärung:
Ich hole mir aus der Datenbank meine Daten und setze die Bilder in ein Div.
Per EvalScripts mache ich jedes einzelne Bild, dass in diesem Div ist, Draggable.
Hab mir jetzt schon ein paar Tuts durchgelesen wo, das mit Referenzen beschrieben wird, nur sehe ich das bei mir im Quellcode nicht. Sieht jemand hier das Problem ?

Auf diese Diskussion antworten