Tun javascript-Variablen haben eine Speicherbegrenzung?
Tun javascript-Variablen haben eine Speicherkapazität überschritten?
Ich bin der Gestaltung einer YUI datatable wo ich das Holen von Daten von der Datenbank und speichern Sie es in einem js-Objekt und, wo erforderlich, werde ich entpacken Sie es und aktualisieren Sie den YUI-datatable. Gerade jetzt in der Dev habe ich nur sehr wenige Aufzeichnungen und Ihre Aufbewahrung korrekt. In der Produktion, ich kann 1000 Datensätze, diese js-Objekt ist in der Lage, speichern Sie alle diese 1000s of records?
Wenn Ihr nicht in der Lage ich werde auf versteckte textarea-Komponente im jsp-und speichern Sie die Daten dort
- mögliche Duplikate von javascript-Objekt max size limit
- Was Sie brauchen, besorgt zu sein, ist die maximale Anzahl von Elementen ein array speichern kann (über 4 Milliarden), und wie viele Daten gespeichert, in jedem Feld in jedem Datensatz. Die Grenzen basieren nicht auf das array als ganzes, sondern jedes einzelne Stück, Zum Beispiel Ganzzahlen und strings, alle haben Ihre eigenen Grenzen. Sie sind eher zu trifft hardware-Beschränkungen auf der client-Maschine lange, bevor Sie die Grenzen der Datentypen.
- Ein paar Dinge zu beachten - möglicherweise speichern Ihre Daten nur-server-und rufen es auf Nachfrage, das wäre drastisch reduzieren unnötige Bandbreite. Auch, da Sie erwähnen, dev und prod sind so unterschiedlich, das ich immer empfehlen würde, eine Produktion-Qualität-test-Umgebung, so dass Sie nicht auf irgendwelche "Fallstricke", wenn der prod. Es ist nicht immer Billig, aber es lohnt sich auch, wenn Sie mehr Sicherheit in Ihrer Produktion-Bereitstellungen.
- Vielen Dank für die Anregungen, Joe. Ich kann nicht Bearbeiten Sie die controller auf der server-Seite coz wir nutzen es an verschiedenen Orten. Wenn ich will erstellen Sie eine separate controller-landete ich mit dem erstellen von 10+ Controller (In Zukunft nicht erhöhen kann, je nach Anforderungen). Testen der gleichen app in Prod env ist eine gute Idee, ich werde auf jeden Fall versuchen Sie dies, wenn mein client ermöglicht.
- Nicht eine echte prod-Umgebung, nur etwas, das so groß wie prod. Eine gängige Möglichkeit ist, nehmen Sie eine Kopie der Produktion, zu identifizieren, irgendwelche persönlichen Informationen (Namen, Adressen, Sozialversicherungsnummern, Telefon, Kundennummer, usw.), dann haben Sie ein Skript ersetzt alle diejenigen, die mit zufälligen Daten. Wenn Sie ein Skript erstellen, können Sie ein Paket erstellen, die aktualisiert wird die Produktion-wie die Datenbank auf Knopfdruck.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Objekte und arrays-Speicher-Grenzen. Sie sind groß genug, um für die meisten Zwecke, theoretisch. Sie werden noch begrenzt durch die VM als die Sprache.
In Ihrem bestimmten Fall (senden Tausende von Elementen zu einem client), Sie laufen in das gleiche problem, ob es JSON, JavaScript oder plain text auf der JSP-Seite: client-Speicher. Der client ist weit mehr wahrscheinlich, heraus zu laufen verwendbarer Arbeitsspeicher als Sie in einer Sprache, die Einschränkung. Für Tausende von kleinen Objekten, sollte dies kein Problem sein.
Arrays haben ein limit von 4,2 Milliarden Einträge, gezeigt in die spec auf 15.4.2.2, zum Beispiel. Verursacht wird diese durch die Länge wird eine 32-bit-Zähler. Vorausgesetzt, jedes element ist eine einzelne ganze Zahl, die ermöglicht Ihnen das speichern 16GB von numerischen Daten in einem einzigen array.
Die Semantik für Objekte, die komplexer sind, aber die meisten Funktionen zur Arbeit mit Objekten, die am Ende mit arrays, so dass Sie zu beschränkt sind, um 4,2 Milliarden Schlüssel in den meisten praktischen Szenarien. Wieder, das ist über 16 GB Daten, nicht eingerechnet der Aufwand zu halten, Verweise.
VM und wahrscheinlich auch der garbage collector, beginnen zu hängen, für lange Zeit gut, bevor Sie in der Nähe der Grenzen der Sprache. Einige Implementierungen haben die kleineren Grenzen, vor allem ältere oder Dolmetscher. Da die JS-spec nicht angeben mindestens Grenzen in den meisten Fällen, die möglicherweise durch die Implementierung festgelegt und könnten viel niedriger sein (diese Frage auf die maximale Anzahl von Argumenten diskutiert, die).
Mit einer guten Optimierung der VM, die versucht zu verfolgen, die Strukturen, die Sie verwenden, in dieser Größe, wird Grund genug, overhead, dass der VM wird wohl wieder zurückgehen, um mit Karten für Ihre Objekte (es ist theoretisch möglich, zu definieren, eine Struktur, die darstellt, dass viele Daten, aber nicht sehr praktisch ist). Karten haben eine kleine Menge von overhead-und lookup-mal länger erhalten als Größe zunimmt, so werden Sie sehen, Auswirkungen auf die Leistung: nur nicht zu jeder angemessenen Größe des Objekts.
Wenn Sie auf ein anderes limit, ich vermute, es wird 65k Elemente (2^16), wie bereits in dieser Antwort. Suche nach einer Umsetzung, unterstützt weniger als 65k Elemente scheint unwahrscheinlich, da die meisten Browser geschrieben wurden, nach 32-bit-Architekturen wurde die norm.
gibt Es nicht so eine Grenze.Sieht es aus, dass es eine Grenze bei 16GB, aber Lesen Sie einige der folgenden tests oder in @ssube Antwort.
Aber wahrscheinlich, wenn Ihr Objekt/json ist rund 50 mb wirst du ein seltsames Verhalten.
Für Json ist hier ein interessanter Artikel : http://josh.zeigler.us/technology/web-development/how-big-is-too-big-for-json/
Für Js-Objekt Sie mehr wissen hier: javascript Objekt maximaler Größe zu begrenzen (sagen, dass es nicht so eine Grenze, aber ein seltsames Verhalten bei ~40 mb)
Die Grenze hängt von den verfügbaren Speicher des Browsers. Also auf jedem PC, Mac, Mobile-setup wird Ihnen ein anderes limit.
Ich weiß nicht, wie viel Speicher man Ihre Aufzeichnungen muss, aber ich würde vermuten, dass 1000 Datensätze sollten auf den meisten Maschinen.
Aber: Sie sollten es vermeiden, die Speicherung massiver Datenmengen in einfachen Variablen, je nach den Aufzeichnungen Speicher verlangsamt es die ganze website Verhalten. Ihre Benutzer mit Durchschnittlicher Computer können sehen hässlich-scrolling-Effekte, verzögert, hover-Effekte und so weiter..
Ich würde Ihnen empfehlen, einen lokalen Speicher verwenden. Tut mir Leid, weiß nicht, die YUI Bibliothek, aber ich bin ziemlich sicher, können Sie den Speicher für Ihre datatable-Quelle.
Gibt es eine Grenze, die auf JavaScript-Objekte max js-Objekt-Grenze. Was würde ich vorschlagen, verwenden session-Objekte, weil das ist, was es klingt wie Ihr versucht zu tun, sowieso.