Ist es in Ordnung, große Objekte (Java-Komponente zum Beispiel) in einer Anwendungsvariablen zu speichern?

StackOverflow https://stackoverflow.com/questions/2851251

Frage

Ich entwickle gerade jetzt eine App, die erstellt und speichert eine Verbindung zu einem lokalen XMPP-Server im Anwendungsbereich. Die Verbindungsmethoden werden in einem cfc gespeichert, dass die Application.XMPPConnection macht verbunden ist und jedes Mal autorisiert es verwendet wird, und verwendet die Verbindung Live-Events an Benutzer zu senden. Soweit ich das beurteilen kann, funktioniert prima dies. Aber hat es nicht unter irgendeiner Art von Stress getestet.

Meine Frage lautet: Wird diese Einrichtung verursachen Probleme später Ich frage nur, weil ich keine Hinweise auf andere Menschen Application-Variablen auf diese Weise unter Verwendung finden können. Wenn ich nicht mit Railo wäre, würde ich Ereignis Gateway CF stattdessen mit der gleichen Aufgabe zu erfüllen.

War es hilfreich?

Lösung

Größe selbst ist kein Problem. Wenn Sie pro Anfrage ein Objekt zu initialisieren, würde man viel mehr Speicher verbrennen. Das Problem ist der Zugang.

Wenn Sie eine große Anzahl von Anfragen haben für das gleiche Objekt im Wettbewerb, müssen Sie für das Objekt gegen Instanziierung die Zugriffszeit messen. Beachten Sie, dass für Datenobjekte, mehr als ein Thread sie lesen kann. wenn mein Verständnis ist, dass, wenn eine Funktion des Objekts aufgerufen wird, es sperrt das Objekt zu anderen Threads, bis die Funktion zurückkehrt.

Auch wenn der Objektzustand hält, müssen Sie überlegen, was zu tun ist, wenn mehrere Threads bekommen / diese Daten einstellen. Werden Sie mit Rennbedingungen am Ende?

Sie sollten erwägen dieses Objekts im Sitzungsbereich Handhabung, so dass es nur pro Benutzer instanziiert wird (der, wahrscheinlich wird nur eine oder zwei gleichzeitige Anfragen machen).

Andere Tipps

Natürlich können Sie Anwendungsbereich für die Speicherung dieser Komponenten verwenden können, wenn sie von allen Benutzern in verschiedenen Teilen der Anwendung verwendet werden. Nun, mögliche Probleme sind:

  1. Größe der Komponente (n)
  2. Zeit für die Initialisierung benötigt, wenn diese bei der Anwendung Start gesetzt
  3. Bedingungen zwischen Einstellung / getting Zustände dieser Komponenten Renn

Zum ersten gibt es Möglichkeiten zu berechnen Größe einer Komponente im Speicher. In letzter Zeit gab es viele Beiträge zu diesem Thema so ist es leicht, einige zu finden sein würde. Wenn Sie in eine große Struktur oder Abfrage gespeichert nicht haben, ich denke, du bist ok hier.

Zweitens wieder, wenn Sie füllen nicht dieses cfc mit einigen großen Abfrage von DB oder tun etwas langsam Parsen, du bist ok hier auch.

Drittens, achten Sie auf mögliche Situationen, in denen mehrere Benutzer Zustände dieser Komponenten ändern sich. Wenn dies der Fall Gebrauch cflock auf jeder Einstellung der Komponenten der Staat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top