2009-06-24 9 views
2

Wir alle wissen, wie Webbrowser (wie Firefox) den Speicherverbrauch auffüllen, da wir JavaScript-Code (von Websites), der zu Speicherlecks neigt, kontinuierlich ausführen.Adobe AIR, Speicherverluste

Ich debattiere bei der Entwicklung einer Desktop-App, und aufgrund meiner Erfahrung mit Javascript/Css/HTML dachte ich, ich würde AIR versuchen, auf diese Weise muss ich nicht Java (zum Beispiel) verwenden und damit umgehen Erlernen aller GUI-Swing-Sachen.

Das Problem ist, dass ich mich Sorgen über Speicherverlust in AIR mache, da AIR einfach ein Webbrowser mit einer API-Schicht ist, um mit dem Betriebssystem zu interagieren.

Ist es plausibel, sich Gedanken über Speicherlecks in AIR zu machen? Was soll ich deswegen machen?

+0

Worry? Ja. Etwas dagegen tun? Nee. –

+0

hat die Frage hinzugefügt :) –

Antwort

9

Mein Name ist Rob Christensen und ich bin Produktmanager für Adobe AIR. Zuerst möchte ich sagen, dass es ziemlich einfach ist, eine Desktop-Anwendung zu erstellen, unabhängig von der zugrunde liegenden Technologie, die viel Speicher verbraucht und/oder keinen Speicher freigibt.

In der nächsten Version von AIR möchten wir der AIR-Laufzeitumgebung einige zusätzliche Funktionen zur Verfügung stellen, um die Erkennung von Speicherverlusten für JavaScript-basierte Anwendungen zu erleichtern. Entwickler, die Flash- oder Flex-basierte Anwendungen erstellen, können bereits den in Flex Builder enthaltenen Speicherprofiler nutzen, um dies zu verfolgen. Wir hoffen, dass auch JavaScript-Entwickler etwas Ähnliches tun können.

Nach meiner Erfahrung mit Speicherentwicklern treten Speicherverluste häufig auf, wenn Objekte im Speicher nie bereinigt werden. Stellen Sie sich beispielsweise einen Twitter-Client vor, der Tweets von Benutzern basierend auf einem Suchschlüsselwort auflistet. Überstunden, mehr Ergebnisse zeigen und die Liste wird länger. Wenn die maximale Anzahl der sichtbaren Tweets nicht begrenzt ist, erhöht sich der Speicher natürlich im Laufe der Zeit. Stattdessen sollte die Anwendung die Anzahl der Elemente, die in dieser Liste erscheinen, angemessen begrenzen.

Es sind einige Vorträge verfügbar, in denen Best Practices zum Umgang mit Speicher in AIR beschrieben werden. Obwohl die Beispiele in diesem Artikel größtenteils in ActionScript geschrieben werden, gelten dieselben Konzepte auch für JavaScript.

Leistungs Tuning AIR-Anwendungen http://www.adobe.com/devnet/air/articles/air_performance.html

Wenn Speicherlecks in der Laufzeit sind, springen wir auf diese so schnell wie wir können. Wir ermutigen Entwickler, sich über solche Probleme zu informieren, indem sie sie mithilfe des folgenden Feedback-Formulars (www.adobe.com/go/wish_de) an unser Team zurücksenden.

Wenn Sie ein Ajax-Framework verwenden, sollten Sie prüfen, ob es bekannte Probleme mit Speicherlecks für dieses bestimmte Framework gibt.

Also, zusammenfassend, ja, sollten Sie sich immer Gedanken über Speicher beim Erstellen einer Desktop-Anwendung - ob mit AIR oder C++. Während Sie Ihre Anwendung entwickeln, sollten Sie die Speichernutzung Ihrer Anwendung überwachen, damit Sie Probleme schneller als später erkennen können.Eine Möglichkeit, dies zu tun, ist, Langlebigkeitstests durchzuführen - halten Sie Ihre Anwendung über Nacht offen, um zu sehen, ob die Speicherkapazität steigt.

Im Allgemeinen sind die für Browser verfügbaren Tools ebenfalls sehr begrenzt. Ich erwarte, dass sich dies bald ändern wird, da die Browser-Hersteller auch mehr Hooks in ihren Browsern bereitstellen, um die Speichernutzung zu identifizieren. Hoffe das hilft.

Vielen Dank!

-ROB

Product Manager, Adobe AIR

1

Sicher. Ich habe AIR-Apps auf Linux gesehen, die im Laufe der Zeit Gigabytes an Speicherkapazität schlucken. Es ist ein echter Blocker für mich und hält mich davon ab, sie zu benutzen.

Das heißt, andere Leute auf anderen Plattformen haben kein Problem damit. Letztendlich müssen Sie entscheiden, was der größte Teil Ihres Marktes sein wird und wie er von Problemen in AIR (oder anderen) betroffen sein wird.

Wenn es nicht so wichtig ist (aber es ist immer noch ein Problem), senden Sie Fehlerberichte und hoffen, dass Adobe die Dinge repariert.

+0

Eigentlich habe ich jetzt Probleme auf Mac OSX. Die einzige Plattform mit weniger Problemen ist Windows. –