The memory usage doesn't grow when I create 10,000 elements. But when I make references to these 10,000 elements, the memory usage grows from 3.5M to 4.0M. And the usage decreases by 0.1M when I destroy the reference while deleting the elements makes it decrease by 0.4M.
Here are my questions:
- Why doesn't memory usage grow when I create 10,000 elements?
- Why does memory usage grow significantly when I make references to these 10,000 elements?
- Why the usage decreases only slightly when references are destroyed while deleting the elements decreases it obviously?
OS: El Capitan 10.11.3 Browser: Chrome 48.0.2564.116 (64-bit)
After creating elements (3.5M memory usage)
After making references (4.0M memory usage)
(function(){
var elemArray = [];
var elemCount = 10000;
//create 10000 elements and append to the dom tree
var create = function(){
var i = 0;
var zone = document.getElementById("zone");
for(;i<=elemCount;i++){
var div = document.createElement("div");
div.id = "div" + i;
div.innerHTML = "the " + i + " div";
zone.appendChild(div);
}
};
document.getElementById("create").addEventListener("click",create,false);
var clear = function(){
var zone = document.getElementById("zone");
zone.innerHTML = "";
};
document.getElementById("clear").addEventListener("click",clear,false);
var link = function(){
var i = 0;
for(;i<=elemCount;i++){
elemArray[i] = document.getElementById("div" + i);
}
};
document.getElementById("link").addEventListener("click",link,false);
var unlink = function(){
if(elemArray.length > 0)
elemArray.splice(0,elemArray.length);
}
document.getElementById("unlink").addEventListener("click",unlink,false);
})();
<button id="create" >create 10000 elements</button>
<button id="clear" >delete 10000 elements</button>
<button id="link" >reference 10000 elements</button>
<button id="unlink" >destroy reference</button>
<div id="zone"></div>