Ограниченная длина объекта JavaScript? [Дубликат]

Connection Я использовал некоторое время назад, это выглядело как самый простой способ, но также была рекомендация сделать там if утверждение - точно

Connection con = DriverManager.getConnection(
                     "jdbc:myDriver:DatabaseName",
                     dBuserName,
                     dBuserPassword);
if (con != null){
 //..handle your code there 
}

Или что-то вроде этого путь:)

Возможно, есть какой-то случай, в то время как getConnection может возвращать null:)

12
задан Xufox 10 August 2015 в 00:11
поделиться

5 ответов

Из нашего теста по этой проблеме кажется, что IE9, Windows 7, ограничивает количество строк в HTA-скрипте до 65535. Я не нашел ни одного источника в этой проблеме, это просто результаты наших тестов.

5
ответ дан David Laberge 26 August 2018 в 19:44
поделиться

Это будет 2 ^ 32 - 1; однако конкретные браузеры могут еще больше ограничить его.

4
ответ дан crush 26 August 2018 в 19:44
поделиться

В текущей версии Chrome (сентябрь 2017 года) я ограничен примерно 8,3 миллионами ключей. Попробуйте вставить это в консоль вашего браузера:

let obj = {};
let keyCount = 0;
while(1) {
  obj[Math.random()] = Math.random();
  if(++keyCount % 10000 === 0) console.log(keyCount);
}

Я получаю идентичный предел в Node.js:

node --max-old-space-size=20000 -e "let obj = {}; let keyCount = 0; while(1) { obj[Math.random()] = Math.random(); if(++keyCount % 10000 === 0) console.log(keyCount); }"

Интересно, если я использую Map , я могу получить около 16.8 миллионов ключей до того, как он сработает (вы можете преодолеть этот предел с помощью чего-то вроде this ).

1
ответ дан Joe 26 August 2018 в 19:44
поделиться

Я не уверен, что значение фактическое , но я вижу практический верхний предел около 400 000 в node.js (на Mac с 16 ГБ ОЗУ ).

Вот журнал, в котором я добавляю строки из базы данных в объект:

[[21:32:34.325]] [LOG] 340001, pint of delight
[[21:32:35.574]] [LOG] 350001, pound shrimp
[[21:32:36.545]] [LOG] 360001, ravioli allaragosta
[[21:32:37.721]] [LOG] 370001, roasted ham and cheese
[[21:32:39.862]] [LOG] 380001, salmon kama
[[21:32:41.152]] [LOG] 390001, scallops and vegetables
[[21:32:42.150]] [LOG] 400001, show cabernet ca
[[21:32:44.412]] [LOG] 410001, sloppy nachos
[[21:33:25.425]] [LOG] 420001, spaghetti or ziti sauce
[[21:35:37.839]] [LOG] 430001, steak au poivre vert
[[21:37:37.202]] [LOG] 440001, sushi moriawase
[[21:39:45.365]] [LOG] 450001, tequila shooters
[[21:42:09.036]] [LOG] 460001, toro roll with scallion
[[21:44:32.796]] [LOG] 470001, two enchiladas taco rice and refried beans
[[21:47:02.584]] [LOG] 480001, veuve clicquot ponsardin rose reims nv
[[21:49:04.020]] [LOG] 490001, whole turkey gourmet sides
[[21:51:15.264]] [LOG] finished

До 400 000 секунд требуется около 1 секунды для вставки 10 000 новых записей. Прошлое 410 000, время увеличивается почти экспоненциально.

Я не уверен, как я это разрешу. Может быть, сделать 2 объекта и ограничить их до 400 000 клавиш каждый ... немного трудоемкий, но лучше, чем переписывать объект словаря:)

Обновление: похоже, на самом деле это объем используемой памяти, выдает и не столько количество объектов. Моя машина замедляет сканирование примерно на 1,5 ГБ оперативной памяти. Он может быть связан с памятью, выделенной для процесса node.js, который может быть увеличен с помощью этого параметра: --max_old_space_size = 4096 (число в MB).

5
ответ дан Nico 26 August 2018 в 19:44
поделиться

Точный максимальный предел массива равен 2 ^ 32 - 1 или 4294967295 из-за ограничений в памяти Javascript.

Ссылка

5
ответ дан talnicolas 26 August 2018 в 19:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: