簡體   English   中英

javascript變量有存儲限制嗎?

[英]Do javascript variables have a storage limit?

javascript變量是否有存儲容量限制?

我正在設計一個YUI數據表,我從數據庫中獲取數據並將其存儲在js對象中,無論何時需要,我將提取它並更新YUI數據表。 現在在Dev我很少有記錄和正確存儲。 在生產中我可能有1000個記錄,這個js對象能夠存儲所有這1000個記錄嗎?

如果它沒有能力我將在jsp中創建隱藏的textarea並將數據存儲在那里

是的,對象和數組有存儲限制。 它們足夠大,在大多數情況下是理論上的。 VM將比語言更受限制。

在您的特定情況下(向客戶端發送數千個項目),您將遇到相同的問題,無論是JSON,JavaScript還是JSP頁面上的純文本:客戶端內存。 與遇到語言限制相比,客戶端更有可能耗盡可用的系統內存。 對於數以千計的小物件,這應該不是問題。

例如,數組的限制為42億個項目 ,如15.4.2.2的規范所示。 這是由長度為32位計數器引起的。 假設每個元素都是一個整數,則允許您在單個數組中存儲16GB的數字數據。

對象的語義更復雜,但是大多數使用對象的函數最終都使用數組,所以在大多數實際場景中你只能使用42億個鍵。 再次,這超過16GB的數據 ,不計入保留引用的開銷。

VM,可能還有垃圾收集器,在你接近語言的極限之前就會開始長時間掛起。 一些實現將具有較小的限制,尤其是較舊的或解釋器。 由於JS規范在大多數情況下沒有指定最小限制,因此可能是實現定義的並且可能要低得多(關於最大參數數量的這個問題討論了這個問題 )。

有一個好的優化虛擬機試圖跟蹤你使用的結構,在那個大小,將導致足夠的開銷,VM可能會回退到使用你的對象的映射(理論上可以定義一個代表那么多數據的結構,但不是非常實用)。 隨着大小的增加,地圖會產生少量開銷,查找時間會變長,因此您會看到性能影響:只是沒有任何合理的對象大小。

如果你遇到另一個限制,我懷疑它將是65k元素(2 ^ 16), 如本答案所述 尋找支持少於65k元素的實現似乎不太可能,因為大多數瀏覽器是在32位架構成為常態之后編寫的。

沒有這樣的限制。

它看起來有16GB的限制,但你可以在下面或@ssube的答案中閱讀一些測試。

但是,當你的物體/ json大約是50 mb時,你會遇到奇怪的行為。

對於Json,這是一篇有趣的文章: http//josh.zeigler.us/technology/web-development/how-big-is-too-big-for-json/

對於Js對象,你在這里有更多的知識: javascript對象最大大小限制 (說沒有這樣的限制,但在~40 mb遇到奇怪的行為)

限制取決於瀏覽器的可用內存。 所以每台PC,Mac,移動設置都會給你一個不同的限制。 我不知道你的記錄需要多少內存,但我猜想1000條記錄應該適用於大多數機器。

但是 :您應該避免將大量數據存儲在簡單變量中,具體取決於記錄內存,這會減慢整個網站的行為。 普通計算機的用戶可能會看到難看的滾動效果,延遲懸停效果等等。

我建議你使用本地存儲。 很抱歉不知道YUI庫,但我很確定你可以指向數據源的存儲。

JavaScript對象max js對象限制有一個限制 我建議使用的是會話對象,因為這聽起來像你試圖做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM