Node.js, sebagai bahasa pengaturcaraan bahagian pelayan moden, biasanya mengendalikan sejumlah besar data dan permintaan serentak. Oleh itu, dalam proses membangunkan dan mengendalikan aplikasi ini, adalah penting untuk mengesan memori yang diduduki oleh aplikasi. Artikel ini akan menerangkan cara menyemak penggunaan memori aplikasi anda dalam Node.js.
Cara memori digunakan dalam Node.js
Node.js menggunakan dua jenis memori: ingatan timbunan dan ingatan tindanan.
Memori timbunan ialah tempat objek yang diperuntukkan secara dinamik disimpan dalam Node.js, seperti tatasusunan, objek dan rentetan. Semasa program dijalankan, ia secara dinamik memohon ruang dalam ingatan timbunan. Ini bermakna saiz memori timbunan adalah berubah-ubah dan oleh itu akan berbeza-beza mengikut saiz bergantung pada operasi dan keperluan aplikasi.
Sebaliknya, memori tindanan mengendalikan panggilan fungsi JavaScript. Setiap kali fungsi dipanggil, pembolehubah dan argumen dalamannya disimpan pada timbunan. Apabila fungsi menyelesaikan pelaksanaan, bingkai tindanan muncul dan ruang memori dilepaskan.
Pengurusan memori Node.js dan pengumpulan sampah
Dalam Node.js, pengurusan memori dilakukan oleh enjin V8. Enjin V8 ialah enjin JavaScript yang dibangunkan oleh Google dan digunakan untuk menyusun dan melaksanakan kod JavaScript.
Dalam Node.js, V8 bertanggungjawab untuk menguruskan memori timbunan dan pengumpulan sampah. Pengumpulan sampah ialah proses automatik yang mengesan dan mengosongkan ruang memori yang tidak lagi digunakan. Pengumpul sampah V8 adalah berdasarkan algoritma sapu tanda Semasa program berjalan, ia mengimbas memori timbunan dan menandakan objek yang dirujuk itu. Selepas itu, ia mengosongkan objek yang tidak dirujuk dan melepaskan ruang yang didudukinya.
Alat Semak Memori dalam Node.js
Terdapat banyak alatan dalam Node.js yang boleh membantu anda menyemak penggunaan memori.
Dalam Node.js, kaedah process.memoryUsage() boleh mengesan memori yang digunakan oleh aplikasi semasa. Kaedah ini mengembalikan objek yang mengandungi penggunaan memori proses pada masa ini. Objek yang dikembalikan oleh kaedah ini mempunyai sifat berikut:
const used = process.memoryUsage(); for (let key in used) { console.log(`${key} ${Math.round(used[key] / 1024 / 1024 * 100) / 100} MB`); }
Menjalankan kod ini akan mengeluarkan penggunaan memori aplikasi semasa ke konsol.
v8.getHeapStatistics()const v8 = require('v8'); const used = v8.getHeapStatistics(); for (let key in used) { console.log(`${key} ${Math.round(used[key] / 1024 / 1024 * 100) / 100} MB`); }
npm install heapdump --save
Kod berikut menunjukkan cara menggunakan modul heapdump untuk menjana syot kilat memori:
const heapdump = require('heapdump'); heapdump.writeSnapshot((err, filename) => { console.log(`Heap dump written to ${filename}`); });
Kod di atas akan menjana syot kilat timbunan memori semasa dan Simpan dalam fail yang ditentukan. Fail ini kemudiannya boleh dianalisis menggunakan pelbagai alat untuk mencari penggunaan memori aplikasi.
Ringkasan
Artikel ini memperkenalkan asas pengurusan memori dan pengumpulan sampah dalam Node.js, dan cara menggunakan beberapa alatan untuk melihat penggunaan memori aplikasi anda. Apabila kita membangunkan dan mengekalkan aplikasi yang besar, adalah sangat penting untuk memahami penggunaan memori. Menggunakan alatan di atas boleh membantu kami menemui dan menyelesaikan masalah memori yang berkemungkinan tepat pada masanya untuk memastikan prestasi dan kestabilan aplikasi.
Atas ialah kandungan terperinci Bagaimana untuk menyemak memori dalam nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!