Cách sửa lỗi JavaScript Heap Out of Memory
Một vấn đề phổ biến khi làm việc trên dự án JavaScript Node.js là lỗi “JavaScript heap out of memory”. Lỗi này thường xảy ra khi bộ nhớ mặc định được hệ thống của bạn phân bổ cho Node.js không đủ để chạy một dự án lớn.
Lỗi thường gặp cho dù bạn chạy dự án của mình trên Windows, macOS hoặc bản phân phối Linux như Ubuntu. May mắn thay, có một số bản sửa lỗi dễ dàng có thể giúp giải quyết lỗi “JavaScript heap out of memory”.
Mục Lục
Bộ nhớ Heap là gì?
Trước khi bạn xem xét việc sửa lỗi, sẽ rất hữu ích nếu bạn hiểu bộ nhớ heap là gì và cách các chương trình sử dụng nó.
Bộ nhớ được cấp phát trên heap hệ thống còn được gọi là bộ nhớ được cấp phát động. Lập trình viên sử dụng bộ nhớ có sẵn khi họ thấy phù hợp tùy thuộc vào lập trình viên. Quan trọng hơn, kích thước heap cho một chương trình phụ thuộc vào bộ nhớ ảo có sẵn được phân bổ cho nó.
Nếu bạn đang chạy một dự án tương đối lớn, nó có thể yêu cầu nhiều bộ nhớ hơn bộ nhớ được cấp phát mặc định. Điều này có thể khiến dự án của bạn gặp sự cố và ghi lỗi “JavaScript heap out of memory”.
Cách khắc phục đống JavaScript hết bộ nhớ trên Windows
Bất kể IDE của bạn là gì, bản sửa lỗi “JavaScript heap out of memory” là giống hệt nhau.
Bạn có thể thêm một biến môi trường thông qua Control Panel để tăng bộ nhớ được cấp phát cho một dự án Node.js.
- Mở Menu bắt đầutìm kiếm Thiết lập hệ thống nâng cao, và chọn kết quả phù hợp nhất.
- Từ hộp thoại, nhấp vào Các biến môi trườngsau đó nhấp vào Mới từ một trong hai Các biến hệ thống hoặc Biến người dùng. Cái trước áp dụng cho tất cả người dùng trên máy tính của bạn, trong khi cái sau chỉ ảnh hưởng đến tài khoản hiện tại của bạn
- bên trong Tên biến nhập trường NODE_OPTIONS. bên trong Giá trị biến nhập trường –max-old-space-size = 4096. Giá trị này sẽ phân bổ 4GB bộ nhớ ảo cho Node.js. Để đặt một giá trị khác, hãy nhân số tiền bạn yêu cầu tính bằng GB với 1024 (giá trị biến cần tính bằng MB).
- Bấm vào ĐƯỢC RỒI để lưu các thay đổi của bạn, sau đó nhấp vào Ứng dụng và cuối cùng nhấp vào ĐƯỢC RỒI một lần nữa. Khởi động lại dự án của bạn để các thay đổi có hiệu lực.
Bạn cũng có thể đặt một biến môi trường thông qua một thiết bị đầu cuối Windows PowerShell.
Khởi chạy thiết bị đầu cuối PowerShell, nhập lệnh dưới đây và nhấn Enter:
$env:NODE_OPTIONS="--max-old-space-size=4096"
Nếu bạn chỉ muốn tạm thời tăng bộ nhớ heap, hãy chạy lệnh dưới đây trong thiết bị đầu cuối PowerShell trước khi chạy dự án của bạn:
set NODE_OPTIONS=
Khi bạn đã nhập lệnh này, bạn có thể triển khai / chạy dự án của mình bằng cách sử dụng npm run dev hoặc kịch bản của riêng bạn.
Hãy nhớ luôn nhập kích thước bộ nhớ cần thiết tính bằng MB. Không làm như vậy có thể gây ra hành vi không mong muốn trong chương trình của bạn. Điều quan trọng là không phân bổ toàn bộ bộ nhớ có sẵn của bạn vì điều này có thể gây ra lỗi hệ thống nghiêm trọng.
Cách sửa lỗi JavaScript Heap Out of Memory trên macOS và Linux
Trên macOS và Linux, bản sửa lỗi bộ nhớ heap rất giống nhau. Bạn nên xuất một biến môi trường chỉ định số lượng bộ nhớ ảo được cấp cho Node.js.
Trong thiết bị đầu cuối của bạn, trước khi bạn chạy dự án của mình, hãy nhập lệnh sau và nhấn Enter:
export NODE_OPTIONS=--max-old-space-size=4096
Điều này sẽ phân bổ 4GB bộ nhớ ảo cho không gian thực thi của Node.js. Để đặt một lượng bộ nhớ khác, hãy thay thế 4096 với số tiền yêu cầu tính bằng MB.
Tránh lỗi JavaScript Heap Out of Memory
Bạn có thể tránh lỗi này bằng cách đảm bảo chương trình của bạn không bị rò rỉ bộ nhớ. Quản lý bộ nhớ thích hợp là rất quan trọng khi viết chương trình của bạn, đặc biệt là bằng ngôn ngữ cấp thấp.
Trong khi việc tăng bộ nhớ được cấp phát sẽ tạm thời khắc phục sự cố, bạn nên tìm nguyên nhân gốc rễ và khắc phục nó.