Isu biasa yang dihadapi oleh aplikasi Node.js ialah ralat "kehabisan memori". Ralat ini mungkin berlaku apabila skrip menggunakan memori yang berlebihan, yang membawa kepada ranap sistem.
Node.js menggunakan sistem pengurusan memori berasaskan timbunan untuk memperuntukkan dan mengagihkan memori. Apabila timbunan kehabisan memori yang tersedia, ralat "timbunan daripada ingatan" akan dilemparkan. Ini boleh berlaku apabila skrip mencipta sejumlah besar objek atau melakukan pengiraan intensif memori.
Dalam laporan ralat yang disediakan, skrip nampaknya menjalankan operasi pengindeksan pada sistem fail yang besar. Skrip menggunakan sejumlah besar memori untuk menyimpan metadata setiap fail yang diindeks. Untuk menangani isu ini, pertimbangkan strategi berikut:
Skrip Node.js biasanya terhad kepada penggunaan memori maksimum sebanyak 1.7 GB secara lalai. Gunakan bendera baris perintah "--max-old-space-size" untuk meningkatkan had ini kepada nilai yang sesuai.
Contohnya:
node --max-old-space-size=4096 yourScript.js
Arahan ini akan meningkatkan maksimum penggunaan memori kepada 4096 MB.
Tatasusunan biasanya lebih cekap ingatan daripada objek. Pertimbangkan untuk menyimpan metadata sistem fail dalam tatasusunan dan bukannya tatasusunan objek. Ini boleh mengurangkan penggunaan memori dengan ketara.
Rujukan yang lemah membolehkan anda memegang objek tanpa menghalang pemungut sampah daripada menuntut semula apabila ia tidak diperlukan lagi. Ini boleh membantu mengelakkan kebocoran memori dan mengurangkan penggunaan memori.
Jika operasi pengindeksan adalah sangat besar, pertimbangkan untuk mengguntingnya kepada tugas yang lebih kecil. Ini akan menghalang skrip daripada kehabisan memori sekaligus.
Jika data yang diindeks terlalu besar untuk dimuatkan dalam ingatan, pertimbangkan untuk menyimpannya dalam pangkalan data luaran atau sistem fail. Ini boleh memunggah beban memori daripada Node.js.
Gunakan alat pemprofilan untuk mengenal pasti corak penggunaan memori skrip. Ini boleh membantu anda mengenal pasti kawasan yang berpotensi untuk pengoptimuman.
Dengan melaksanakan strategi ini, anda boleh meningkatkan pengurusan memori skrip Node.js anda dan mengelakkan ralat "kehabisan memori".
Atas ialah kandungan terperinci Mengapa Skrip Node.js Saya Ranap dengan Ralat Habis Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!