Сколько максимум памяти может выделить открытая вкладка в Google Chrome?
На собеседовании у меня задали вопрос про то, сколько памяти максимум может быть выделено под вкладку в браузере. Как это можно узнать?
const blockContainerNode = document.querySelector('.block-container');
const inputNode = document.querySelector('.input');
const btnStartNode = document.querySelector('.btn-start');
const btnEndNode = document.querySelector('.btn-end');
btnStartNode.addEventListener('click', () => {
const inputValue = Number(inputNode.value);
if (!isNaN(inputValue) && inputValue > 0) {
startAnimation(blockContainerNode, inputValue);
}
});
btnEndNode.addEventListener('click', () => {
blockContainerNode.textContent = '';
});
function startAnimation(blockContainerNode, quantityBlocks) {
const blockNodes = new Array(quantityBlocks).fill(0).map((item, i) => {
const divNode = document.createElement('div');
divNode.classList.add('block');
divNode.textContent = i;
divNode.style.setProperty('--index', i);
return divNode;
});
document.body.style.setProperty('--maxIndex', quantityBlocks);
blockContainerNode.textContent = '';
blockContainerNode.append(...blockNodes);
}
.block-container {
--maxIndex: 0;
display: flex;
flex-wrap: wrap;
gap: 15px;
padding: 40px;
}
.block {
--index: 0;
display: flex;
justify-content: center;
align-items: center;
animation: anime 2s calc(var(--index) * -0.5s) infinite linear alternate-reverse;
}
@keyframes anime {
0% {
transform: rotate(0deg) scale(1) skew(60deg, 80deg);
}
100% {
transform: rotate(360deg) scale(3);
}
}
<input class="input" type="number" value="1000" placeholder="Количество блоков">
<button class="btn-start" type="button">Начать анимацию</button>
<button class="btn-end" type="button">Удалить</button>
<div class="block-container">
</div>
Ответы (1 шт):
Согласно информации из сайта js9.si.edu в Хроме х64 ограничение 4Gb на вкладку.
Browser limitations on per-tab memory are not well documented. The 64-bit Chrome browsers are known to have a 4Gb per-tab memory limit. iOS devices have more stringent limitations: empirical evidence indicates that the iPhone 6 is limited to 645Mb, the iPhone 6s to 1Gb, and the iPhone 7 to 2Gb.
Рискну предположить, что это ограничение связано с тем, что хром для каждой вкладки создает новый процесс. Буду рад, если кто-то дополнит ответ и объяснит почему именно 4Gb.