আমি একটি খুব সাধারণ পরীক্ষার কেস তৈরি করেছি যা ব্যাকবোন ভিউ তৈরি করে, কোনও ইভেন্টে কোনও হ্যান্ডলার সংযুক্ত করে এবং ব্যবহারকারী-সংজ্ঞায়িত শ্রেণিকে ইনস্ট্যান্ট করে তোলে। আমি বিশ্বাস করি যে এই নমুনায় "অপসারণ" বোতামটি ক্লিক করে সমস্ত কিছু পরিষ্কার হয়ে যাবে এবং কোনও মেমরি ফাঁস হওয়া উচিত নয়।
কোডটির জন্য একটি jsfiddle এখানে: http://jsfiddle.net/4QhR2/
// scope everything to a function
function main() {
function MyWrapper() {
this.element = null;
}
MyWrapper.prototype.set = function(elem) {
this.element = elem;
}
MyWrapper.prototype.get = function() {
return this.element;
}
var MyView = Backbone.View.extend({
tagName : "div",
id : "view",
events : {
"click #button" : "onButton",
},
initialize : function(options) {
// done for demo purposes only, should be using templates
this.html_text = "<input type='text' id='textbox' /><button id='button'>Remove</button>";
this.listenTo(this,"all",function(){console.log("Event: "+arguments[0]);});
},
render : function() {
this.$el.html(this.html_text);
this.wrapper = new MyWrapper();
this.wrapper.set(this.$("#textbox"));
this.wrapper.get().val("placeholder");
return this;
},
onButton : function() {
// assume this gets .remove() called on subviews (if they existed)
this.trigger("cleanup");
this.remove();
}
});
var view = new MyView();
$("#content").append(view.render().el);
}
main();
তবে, গুগল ক্রোমের প্রোফাইলার কীভাবে ব্যবহার করতে হয় তা যাচাই করার জন্য আমি অস্পষ্ট fact হ্যাজ প্রোফাইলার স্ন্যাপশটে একটি গাজিলিয়ন জিনিস প্রদর্শিত হবে এবং কী ভাল / খারাপ তা কীভাবে ডিকোড করতে হবে তার আমার কোনও ধারণা নেই। আমি এ পর্যন্ত যে টিউটোরিয়ালগুলি দেখেছি তা হয় আমাকে কেবল "স্ন্যাপশট প্রোফাইলার ব্যবহার করতে" বলুন বা পুরো প্রোফাইলার কীভাবে কাজ করে তা সম্পর্কে একটি বিস্তৃত বিশদ ম্যানিফেস্টো আমাকে জানান। কেবলমাত্র একটি সরঞ্জাম হিসাবে প্রোফাইলারটি ব্যবহার করা কি সম্ভব, বা পুরো জিনিসটি কীভাবে ইঞ্জিনিয়ার করা হয়েছিল তা আমাকে সত্যিই বুঝতে হবে?
সম্পাদনা: টিউটোরিয়ালগুলি এর মতো:
আমি যা দেখেছি সেখান থেকে শক্তিশালী কিছু উপাদানের প্রতিনিধি। তবে, 3 টি স্ন্যাপশট প্রযুক্তিটির ধারণাটি প্রবর্তনের বাইরে , আমি দেখতে পেলাম যে তারা ব্যবহারিক জ্ঞানের দিক দিয়ে খুব সামান্য প্রস্তাব দেয় (আমার মতো শিক্ষানবিশদের জন্য)। 'ডিভটুলস ব্যবহার করে' টিউটোরিয়ালটি বাস্তবে উদাহরণ দিয়ে কাজ করে না, সুতরাং এর অস্পষ্ট এবং সাধারণ ধারণাগত বিবরণটি অতিরিক্ত সহায়ক নয়। 'জিমেইল' উদাহরণ হিসাবে:
সুতরাং আপনি একটি ফাঁস পেয়েছেন। এখন কি?
প্রোফাইল প্যানেলের নীচের অর্ধেক অংশে ফাঁস হওয়া অবজেক্টগুলির ধরে রাখার পথ পরীক্ষা করুন
যদি বরাদ্দ সাইটটি সহজেই অনুমান করা যায় না (যেমন ইভেন্ট শ্রোতা):
বরাদ্দের জন্য স্ট্যাক ট্রেস সংরক্ষণ করার জন্য জেএস কনসোলের মাধ্যমে রক্ষণাবেক্ষণকারী অবজেক্টের কনস্ট্রাক্টরকে নির্দেশ দিন
বন্ধ ব্যবহার করছেন? নির্মাণের সময় সৃষ্টি স্ট্যাক সম্পত্তি সেট করতে উপযুক্ত বিদ্যমান পতাকাটি (যেমন goog.events.Listtener.ENABLE_MONITORING) সক্ষম করুন
আমি এটি পড়ার পরে নিজেকে আরও বিভ্রান্ত মনে করি, কমও নয়। এবং, আবার, এটা ঠিক আমাকে বলছে এর কি জিনিস, না কিভাবে তাদের কাজ করতে। আমার দৃষ্টিকোণ থেকে, বাইরে থাকা সমস্ত তথ্যই খুব অস্পষ্ট বা কেবল এমন কাউকেই বোঝাতে পারে যারা ইতিমধ্যে প্রক্রিয়াটি বোঝে।
এই আরও কিছু সুনির্দিষ্ট বিষয় নীচে @ জোনাথন নাগুইনের উত্তরে উত্থাপিত হয়েছে ।
main
একবারের পরিবর্তে 10,000 বার কল করা এবং দেখুন যে আপনি শেষে প্রচুর পরিমাণে মেমরি ব্যবহার করছেন।