Les variables javascript ont-elles une limite de stockage?

Les variables javascript ont-elles une limite de capacité de stockage?

Je concevais un daté YUI où je récupère les données de la base de données et la stocke dans un objet js et, le cas échéant, je l'extraire et mettre à jour la base de données YUI. En ce moment, chez Dev, j'ai très peu d'enregistrements et je stocke correctement. En production, j'ai peut-être 1000 enregistrements, cet objet js est capable de stocker tous ces enregistrements de 1000?

Si ce n'est pas capable, je vais créer sur textarea caché dans jsp et stocker les données là-bas

Oui, les objets et les tableaux ont des limites de stockage. Ils sont suffisamment grands pour être, pour la plupart, théoriques. Vous serez plus limité par la VM que par la langue.

Dans votre cas particulier (en envoyant des milliers d'articles à un client), vous rencontrerez le même problème, qu'il s'agisse de JSON, JavaScript ou texte brut sur la page JSP: mémoire client. Le client est beaucoup plus susceptibles de ne plus se souiller de la mémoire système utilisable que vous ne l'utilisez dans une restriction de langue. Pour des milliers de petits objets, cela ne devrait pas être un problème.

Les tableaux ont une limite de 4,2 milliards d'articles , par exemple dans la spécification au 15.4.2.2 . Ceci est dû à la longueur d'un compteur de 32 bits. En supposant que chaque élément est un seul entier, cela vous permet de stocker 16 Go de données numériques dans un seul tableau.

La sémantique sur les objets est plus complexe, mais la plupart des fonctions pour travailler avec des objets finissent par utiliser des tableaux, donc vous êtes limité à 4,2 milliards de clés dans les scénarios les plus pratiques. Encore une fois, c'est plus de 16 Go de données , sans compter les frais généraux pour garder les références.

La VM, et probablement le collecteur d'ordures, va commencer à s'accrocher pendant de longues périodes bien avant de vous rapprocher des limites de la langue. Certaines implémentations auront des limites plus petites, en particulier les anciennes ou les interprètes. Étant donné que la spécification JS ne spécifie pas de limites minimales dans la plupart des cas, celles-ci peuvent être définies par la mise en œuvre et pourraient être beaucoup plus faibles ( cette question sur le nombre maximum d'arguments les discute).

Avec une bonne VM optimisante qui essaie de suivre les structures que vous utilisez, à cette taille, cela entraînera suffisamment de frais généraux que la VM retournera probablement à l'aide de cartes pour vos objets (il est théoriquement possible de définir une structure représentant cette quantité de données, mais pas Terriblement pratique). Les cartes ont une petite quantité de frais généraux et les temps de recherche augmentent à mesure que la taille augmente, de sorte que vous verrez des implications sur la performance: tout simplement à aucune taille d'objet raisonnable.

Si vous rencontrez une autre limite, je pense que ce sera 65k éléments (2 ^ 16), comme indiqué dans cette réponse . Trouver une implémentation qui supporte moins de 65k éléments semble peu probable, car la plupart des navigateurs ont été écrits après les architectures 32 bits sont devenues la norme.

Il n'y a pas une telle limite.

Il semble qu'il y ait une limite à 16 Go, mais vous pouvez lire certains tests ci-dessous ou dans la réponse de @ssube.

Mais probablement lorsque votre objet / json est d'environ 50 mb, vous rencontrerez un comportement étrange.

Pour Json, voici un article intéressant: http://josh.zeigler.us/technology/web-development/how-big-is-too-big-for-json/

Pour Js Object, vous avez plus de connaissances ici: limite de taille maxi de l'objet javascript (en disant qu'il n'y a pas une telle limite mais rencontre un comportement étrange à ~ 40 mb)

La limite dépend de la mémoire disponible du navigateur. Ainsi, chaque configuration PC, Mac, Mobile vous donnera une limite différente. Je ne sais pas combien de mémoire une de vos archives a besoin, mais je suppose que 1000 enregistrements devraient fonctionner sur la plupart des machines.

Mais : Vous devez éviter de stocker des quantités de données massives dans des variables simples, selon la mémoire des enregistrements, cela ralentit tout le comportement du site. Vos utilisateurs disposant d'ordinateurs moyens peuvent voir des effets de défilement moche, des effets d'aspiration retardés, etc.

Je vous recommanderais d'utiliser le stockage local. Je suis désolé de ne pas connaître la bibliothèque YUI, mais je suis certain que vous pouvez indiquer le stockage de votre source datatée.

Il existe une limite sur les objets JavaScript max js limite d'objet . Ce que je suggérerais d'utiliser est des objets de session, car c'est ce que cela semble être votre tentative de faire de toute façon.