আমি নিম্নলিখিত ক্রোম বাগটি লগইন করেছি , যা আমার কোডে অনেক গুরুতর এবং স্পষ্টতই মেমরি ফাঁস না করে:
(এই ফলাফলগুলি ক্রোম দেব সরঞ্জামগুলির মেমরি প্রোফাইলার ব্যবহার করে , যা জিসি চালায় এবং তারপরে আবর্জনা সংগ্রহ না করা সমস্ত কিছুর স্ন্যাপশট নেয়))
নীচের someClass
কোডে উদাহরণটি হ'ল আবর্জনা সংগ্রহ করা (ভাল):
var someClass = function() {};
function f() {
var some = new someClass();
return function() {};
}
window.f_ = f();
তবে এটি এই ক্ষেত্রে আবর্জনা সংগ্রহ করা হবে না (খারাপ):
var someClass = function() {};
function f() {
var some = new someClass();
function unreachable() { some; }
return function() {};
}
window.f_ = f();
এবং সম্পর্কিত স্ক্রিনশট:
দেখে মনে হচ্ছে যে কোনও অবসান (এই ক্ষেত্রে function() {}
) সমস্ত অবজেক্টকে "জীবিত" রাখে যদি বস্তুটি অন্য কোনও বন্ধ দ্বারা একই প্রসঙ্গে রেফারেন্স করা হয়, সেই ক্লোজারটি নিজেই পৌঁছনীয় কিনা।
আমার প্রশ্নটি অন্যান্য ব্রাউজারগুলিতে (IE 9+ এবং ফায়ারফক্স) বন্ধের আবর্জনা সংগ্রহ সম্পর্কে। আমি জাভাস্ক্রিপ্ট হিপ প্রোফাইলারের মতো ওয়েবকিটের সরঞ্জামগুলির সাথে বেশ পরিচিত, তবে আমি অন্যান্য ব্রাউজারগুলির সরঞ্জামগুলি খুব কম জানি, তাই আমি এটি পরীক্ষা করতে সক্ষম হইনি।
এই তিনটি ক্ষেত্রে কোনটি আই 9+ এবং ফায়ারফক্সের আবর্জনা সংগ্রহ করবে someClass
?
unreachable
ফাংশনটি কখনই কার্যকর হয় না তাই আসলে কিছুই লগ হয় না।