Làm thế nào để ngăn chặn rò rỉ bộ nhớ trong Angular

Cập nhật ngày: 19/04/2024 - Đã có 500 lượt xem bài viết này!
Làm thế nào để ngăn chặn rò rỉ bộ nhớ trong Angular
Điều gì tuyệt vời khi học Angular? Đó là khi bạn đã áp dụng được Angular xây dựng ra một ý tưởng phần mềm nào đó. Tuy nhiên, bạn đã làm tốt nhất có thể cho đến lúc nhận ra nó không hoạt động tốt? Vậy thì làm thế nào để kiểm tra? Bạn chỉ cần mở ứng dụng đó lên trong trình duyệt, mở trong khoảng 60 phút (nhớ để pin laptop thật đầy, không thôi sẽ bị gián đoạn không check được), khi trang bắt đầu thu thập dữ liệu bạn nên kiểm tra xem mức dử dụng bộ nhớ đó như thế nào.

Làm thế nào để ngăn chặn rò rỉ bộ nhớ trong Angular


Mỗi khi bạn tạo một subscription hay một tham chiếu đến bộ lọc cho observable, nếu bạn không cẩn thận và hủy đăng ký thì tham chiếu sẽ nằm trong bộ nhớ ngay cả khi thành phần bạn tạo sẽ bị phá hủy. Điều này được gọi là rò rỉ bộ nhớ có thể gây ra một vấn đề nghiêm trọng phụ thuộc vào kích thước của ứng dụng của bạn.

Hủy đăng ký :Hủy đăng ký là giải pháp đơn giản nhất cho vấn đề này, bất cứ khi nào bạn tạo đăng ký, bạn phải giữ tham chiếu đến đăng ký đó và khi bạn đã hoàn tất đăng ký, bạn phải gọi .unsubscribe trên tham chiếu.

Việc sử dụng móc vòng đời của ngOnDestroy rất quan trọng ở đây, nó sẽ được gọi khi thành phần sắp bị phá hủy. Một vấn đề với cách tiếp cận này là bạn phải giữ một tham chiếu đến tất cả các observable mà bạn đang tạo ra trong thành phần của bạn.

TakeUntil: Cách tiếp cận trước đó có một vấn đề mà chúng ta cần phải tạo một tham chiếu cho tất cả các biến và để tránh vấn đề đó, chúng ta có thể sử dụng toán tử takeUntil để hủy đăng ký. takeUntil là một toán tử rxjs có một observable như một đối số. Nó sẽ giữ cho đăng ký đầu tiên tồn tại cho đến khi lần thứ hai observable được kết thúc.

Async Pipe: 
Khi có thể được sử dụng và sử dụng đúng cách, đây là phương pháp lý tưởng so với hai phương pháp đầu tiên. Đường async có một observable như một đối số và trả về giá trị từ trực tiếp observable tới mẫu. Vì vậy, khi một thành phần bị phá hủy, chúng tôi không cần phải làm bất kỳ điều gì vì Async Pipe sẽ xử lý việc hủy đăng ký khỏi các thành phần observable. Đây là cách đăng ký hiệu quả nhất và hủy đăng ký các observable.

Có một vài cảnh báo như bạn không thể sử dụng lại đăng ký khi sử dụng async pipe. Bạn buộc phải sử dụng nhiều async cho cùng một observable mà sẽ tạo nhiều đăng ký nhưng có nhiều phương pháp khác nhau để khắc phục những vấn đề đó.

BTV.Trần Thị Thu Trang
Phòng Truyền Thông IMIC Technology Việt Nam
Hotline: 0916 878 224
Email: trangttt2@imic.edu.vn

 

Bạn đang muốn tìm kiếm 1 công việc với mức thu nhập cao.
✅ Hoặc là bạn đang muốn chuyển đổi công việc mà chưa biết theo học ngành nghề gì cho tốt.
✅ Giới thiệu với bạn Chương trình đào tạo nhân sự dài hạn trong 12 tháng với những điều đặc biệt mà chỉ có tại IMIC và đây cũng chính là sự lựa chọn phù hợp nhất dành cho bạn:
👉 Thứ nhất: Học viên được đào tạo bài bản kỹ năng, kiến thức chuyên môn lý thuyết, thực hành, thực chiến nhiều dự án và chia sẻ những kinh nghiệm thực tế từ Chuyên gia có nhiều năm kinh nghiệm dự án cũng như tâm huyết truyền nghề.
👉 Thứ hai: Được ký hợp đồng cam kết chất lượng đào tạo cũng như mức lương sau tốt nghiệp và đi làm tại các đối tác tuyển dụng của IMIC. Trả lại học phí nếu không đúng những gì đã ký kết.
👉 Thứ ba: Cam kết hỗ trợ giới thiệu công việc sang đối tác tuyển dụng trong vòng 10 năm liên tục.
👉 Thứ tư: Được hỗ trợ tài chính với mức lãi suất 0 đồng qua ngân hàng VIB Bank.
👉  Có 4 Chương trình đào tạo nhân sự dài hạn dành cho bạn lựa chọn theo học. Gồm có:
1)  Data Scientist full-stack
2)  Embedded System & IoT development full-stack
3)  Game development full-stack
4)  Web development full-stack 
✅ Cảm ơn bạn đã dành thời gian lắng nghe những chia sẻ của mình. Và tuyệt vời hơn nữa nếu IMIC được góp phần vào sự thành công của bạn. 
✅ Hãy liên hệ ngay với Phòng tư vấn tuyển sinh để được hỗ trợ về thủ tục nhập học.
✅ Chúc bạn luôn có nhiều sức khỏe và thành công!

Tham khảo các khóa đào tạo nhân sự qua danh mục