मैं जानबूझ कर स्मृति बर्बाद, क्रोम (v48) में जे एस सरणियों का उपयोग कर इस बार-बार फोन करके हैं:क्रोम में, टाइप किए गए एरैस जेएस हीप पर क्यों नहीं हैं?
var rootReference;
function wasteBunchOfMemoryWithJsArrays()
{
rootReference = rootReference || [];
for (var i = 0; i < 1000; i++)
{
var blah = [];
for (var j = 0; j < 10000; j++)
{
blah.push(j);
}
rootReference.push(blah);
}
}
तब के बारे में 700MB उपयोग, जो मोटे तौर पर सीमा निर्धारित से मेल खाता है (कार्य प्रबंधक के अनुसार) पर ब्राउज़र टैब के क्रैश performance.memory.jsHeapSizeLimit
में।
लेकिन अगर मैं स्मृति बर्बाद ऐसे Int32Array के रूप में एक TypedArray का उपयोग कर, यह बार-बार फोन करके:
var typedRootReference;
function wasteBunchOfMemoryWithInt32Arrays()
{
typedRootReference = typedRootReference || [];
for (var i = 0; i < 100; i++) {
var blah = new Int32Array(100000);
for (var j = 0; j < 100000; j++) {
blah[j] = j;
}
typedRootReference.push(blah);
}
}
तो मैं ऊपर और जा रहा है जब तक मैं हिट क्या मैं Windows 32 बिट प्रक्रिया स्मृति सीमा होने के लिए मान रख सकते लगभग 2.9 जीबी!
क्या यह केवल मामला है कि टाइप किए गए आरे जेएस ढेर सीमाओं के आसपास आते हैं? क्यूं कर? क्या TypedArrays के बारे में मुझे कुछ और चिंतित होना चाहिए?
संयोग से, मुझे फ़ायरफ़ॉक्स में एक ही व्यवहार नहीं मिला। मुझे लगता है, जैसा कि आपने सुझाव दिया है, यह केवल क्रोम के लिए Google द्वारा कार्यान्वित किया गया है। मैं क्रोम वी 8 में "प्रति टैब 1 जीबी सीमा" के बारे में पढ़ता रहता हूं लेकिन मैं इसे दोहराने में सक्षम नहीं था, और ऐसा लगता है कि यह प्रदर्शन नहीं करता है। Memory.jsHeapSizeLimit। –