উত্তর:
নোড-মেমওয়াচ : নোড.জেএস কোডে মেমরি ফাঁস সনাক্ত এবং সন্ধান করুন। এই টিউটোরিয়ালটি নোড.জেজে ট্র্যাকিং ডাউন মেমরি লিক দেখুন
অন্তর্নির্মিত প্রক্রিয়া মডিউলটির একটি পদ্ধতি রয়েছে memoryUsage
যা বর্তমান নোড.জেএস প্রক্রিয়াটির মেমরির ব্যবহারের অন্তর্দৃষ্টি দেয়। এখানে 64-বিট সিস্টেমে নোড v0.12.2 এর একটি উদাহরণ রয়েছে:
$ node --expose-gc
> process.memoryUsage(); // Initial usage
{ rss: 19853312, heapTotal: 9751808, heapUsed: 4535648 }
> gc(); // Force a GC for the baseline.
undefined
> process.memoryUsage(); // Baseline memory usage.
{ rss: 22269952, heapTotal: 11803648, heapUsed: 4530208 }
> var a = new Array(1e7); // Allocate memory for 10m items in an array
undefined
> process.memoryUsage(); // Memory after allocating so many items
{ rss: 102535168, heapTotal: 91823104, heapUsed: 85246576 }
> a = null; // Allow the array to be garbage-collected
null
> gc(); // Force GC (requires node --expose-gc)
undefined
> process.memoryUsage(); // Memory usage after GC
{ rss: 23293952, heapTotal: 11803648, heapUsed: 4528072 }
> process.memoryUsage(); // Memory usage after idling
{ rss: 23293952, heapTotal: 11803648, heapUsed: 4753376 }
এই সাধারণ উদাহরণে, আপনি দেখতে পাচ্ছেন যে 10M উপাদানগুলির গ্রাহকদের প্রায় ৮০ মেগাবাইটের অ্যারে বরাদ্দ করা হয় (একবার দেখুন heapUsed
)।
আপনি V8 এর সোর্স কোড তাকান থাকেন ( Array::New
, Heap::AllocateRawFixedArray
, FixedArray::SizeFor
), তারপর আপনি দেখতে পাবেন যে একটি অ্যারের দ্বারা ব্যবহৃত মেমরি একটি নির্দিষ্ট মান প্লাস দৈর্ঘ্য একটি পয়েন্টার আকার দ্বারা গুন করা হয়। পরবর্তীটি ৪-বিট সিস্টেমে 8 বাইট, যা নিশ্চিত করে যে 8 x 10 = 80MB এর মেমরির পার্থক্যটি বোঝায়।
--expose-gc
জন্য gc
ফাংশন আছে?
--expose-gc
জন্য process.memoryUsage()
। gc()
(প্রয়োজনীয় --expose-gc
) process.memoryUsage
প্রতিবেদনগুলি কী কী তা দেখার জন্য এটি আরও সহজ করে তুলতে জঞ্জাল সংগ্রহকে নির্বিচারে ট্রিগার করার জন্য ব্যবহার করা হয়েছিল ।
এছাড়াও, আপনি যদি নোড প্রক্রিয়া'র পরিবর্তে গ্লোবাল মেমরিটি জানতে চান ':
var os = require('os');
os.freemem();
os.totalmem();
মূল মেমওয়চটি মূলত মারা গেছে। পরিবর্তে মেমওয়াচ-পরবর্তী চেষ্টা করুন , যা নোডের আধুনিক সংস্করণগুলিতে ভাল কাজ করছে বলে মনে হচ্ছে।
লিনাক্স / ইউনিক্সে (দ্রষ্টব্য: ম্যাক ওএস একটি ইউনিক্স) ব্যবহার করুন top
এবং মেমরির ব্যবহার দ্বারা প্রক্রিয়াগুলি সাজানোর জন্য এম ( Shift+ M) টিপুন ।
উইন্ডোজে টাস্ক ম্যানেজার ব্যবহার করুন।
Applications > Utilities
এবং আপনি একটি Activity Monitor
অ্যাপ্লিকেশন পাবেন। এটি একটি টাস্ক ম্যানেজারের সমতুল্য। ওএস এক্স এর top
কমান্ডও রয়েছে।
htop
লিনাক্স শীর্ষে পরিবর্তে ব্যবহার করুন। এটা অনেক ভালো.