Bu yazıda, Node.js’deki Memory Leak Warning hatasının ne olduğunu, neden meydana geldiğini ve bu hatayı nasıl çözebileceğinizi adım adım keşfedeceğiz. Hazırsanız, başlıyoruz!
Memory Leak Nedir?
Örneğin, uygulamanızda her yeni istek geldiğinde bir nesne oluşturuluyor ve bu nesne bellekten serbest bırakılmıyor. Birkaç istekten sonra, bellek dolmaya başlar ve Node.js’in çıktısında "Memory Leak Warning" hatasını görmeye başlarsınız.
Hata Mesajı Neden Gösteriliyor?
```
(Use `node --trace_gc` for more info)
(Use `node --inspect` to start debugging)
```
Bu mesaj, belleğinizin belirli bir eşiği geçtiğini ve bu durumun, uygulamanın stabilitesine zarar verebileceğini gösterir.
Memory Leak Hatasını Çözme Yöntemleri
Node.js uygulamanızda bellek kullanımını izlemek için birkaç araç ve teknik mevcuttur. İlk olarak, `--trace_gc` bayrağını kullanarak daha fazla bilgi alabilirsiniz:
```
node --trace_gc app.js
```
Bu komut, uygulamanın bellek kullanımını ve çöp toplama süreçlerini izler. Çıktıda hangi nesnelerin ne kadar bellek kullandığını görebilirsiniz.
# 2. Gereksiz Nesne Referanslarını Kaldırmak
Örnek olarak:
```
// Yanlış kullanım
let myObject = {};
setInterval(() => {
myObject = {}; // yeni nesne atama, eski nesneyi bırakmıyor
}, 1000);
// Doğru kullanım
let myObject = {};
setInterval(() => {
myObject = {}; // burada bellek serbest bırakılır
}, 1000);
```
Eğer eski nesneleri doğru şekilde temizlemezseniz, bellek sızıntıları meydana gelir.
# 3. Event Listener’ları Temizlemek
Örneğin:
```
const EventEmitter = require('events');
const emitter = new EventEmitter();
function handleEvent() {
console.log('Event Triggered');
}
// Yanlış kullanım: Event Listener temizlenmiyor
emitter.on('event', handleEvent);
// Doğru kullanım: Event Listener temizleniyor
emitter.removeListener('event', handleEvent);
```
4. Profilleme Yapmak
```
npm install clinic --save-dev
clinic doctor -- node app.js
Bu komut, uygulamanızın bellek kullanımını detaylı bir şekilde inceleyecek ve potansiyel bellek sızıntılarını tespit edecektir.
Bellek Sızıntılarından Nasıl Kaçınılır?
- Nesneleri doğru şekilde serbest bırakın: Her nesne için gereksiz referansları temizleyin.
- Event Listener’ları düzenli olarak temizleyin: Kullanılmayan event listener’ları silmeyi unutmayın.
- Çöp toplama süreçlerini izleyin: Node.js'in çöp toplama süreçlerini takip ederek bellek kullanımını gözlemleyin.
- Profil araçlarını kullanın: Uygulamanızı düzenli olarak profilleyin ve bellek sızıntılarını erkenden tespit edin.