مقالات طراحی سایت

آموزش موارد مربوط به طراحی و ساخت وب سایت

مفهوم Memory leaks

اگر مدیریت حافظه برای برنامه کامپیوتری و یا اپلیکیشن بدرستی انجام نگرفته باشد Memory leaks رخ میدهد. دو حالت از memory leaks وجود دارد که در اینجا به آنها اشاره میکنم. نوع اول آن بدین صورت است که در برنامه کامپیوتری و یا اپلیکیشن حافظه ای که دیگر به آن احتیاج نیست آزاد نشود. نوع دیگر آن زمانی رخ میدهد که کد به آبجکتی که در حافظه ذخیره شده باشد دیگر دسترسی نداشته باشد.

روش اشتباه در هندل کردن subscriptionها

زمانی که شما به observableها subscribe میکنید لازم است که در هنگام destroy اپ آنها را سابسکرایب کنید. اگر اینکار را انجام ندهید میتواند منجر به memory leaks شود. برای مثال:


class AppComponent implements OnInit {
myData: MyDataType[];
constructor(private httpClient: HttpClient){ }

ngOnInit() {
this.httpClient
.get('/api/my-data')
.subscribe((data: MyDataType[]) => {
myData = data;
});
}
}

روش درست

ساده ترین راه برای unsubscribe کردن این است که subscription را داخل یک رفرنس ذخیره کرده و در متد ngOnDestroy آنرا unsubscribe کنید. برای مثال:


class AppComponent implements OnInit, OnDestroy {
myData: MyDataType[];
myDataSubscription: Subscription; constructor(private httpClient: HttpClient){ }

ngOnInit() {
this.myDataSubscription = this.httpClient
.get('/api/my-data')
.subscribe((data: MyDataType[]) => {
myData = data;
});
}
ngOnDestroy(){
this.myDataSubscription.unsubscribe();
}
}

محمد صالح کاتبی دهم نوامبر 2020

نوشتن دیدگاه