Hướng dẫn how do you fix fatal error reached heap limit allocation failed javascript heap out of memory? - làm cách nào để bạn sửa lỗi nghiêm trọng đạt đến giới hạn phân bổ heap không thành công javascript heap hết bộ nhớ?

Đối với một câu trả lời chung không hơi cho những người hạ cánh về câu hỏi này từ Google:

Hầu hết các lần khi bạn đối mặt với lỗi này, nó có thể là do rò rỉ bộ nhớ, nâng cấp thêm/phiên bản của thư viện hoặc sự khác biệt trong cách Node.js quản lý bộ nhớ giữa các phiên bản [ví dụ: Node.js phiên bản 10].

Thông thường chỉ cần tăng bộ nhớ được phân bổ cho Node.js sẽ cho phép chương trình của bạn chạy nhưng thực sự có thể không giải quyết vấn đề thực và bộ nhớ được sử dụng bởi quy trình nút vẫn có thể vượt quá bộ nhớ mới mà bạn phân bổ. Tôi khuyên bạn nên sử dụng bộ nhớ định lập trong quy trình Node.js của bạn khi nó bắt đầu chạy hoặc cập nhật lên Node.js> 10.

Tôi đã bị rò rỉ trí nhớ. Dưới đây là một bài viết tuyệt vời về việc gỡ lỗi rò rỉ bộ nhớ trong Node.js.

Điều đó nói rằng, để tăng bộ nhớ, trong thiết bị đầu cuối nơi bạn chạy quy trình Node.js:

export NODE_OPTIONS="--max-old-space-size=8192"

trong đó các giá trị của max-old-space-size có thể là: [2048, 4096, 8192, 16384], v.v.

Thêm các ví dụ cho sự rõ ràng hơn nữa:

export NODE_OPTIONS="--max-old-space-size=5120" # Increase to 5 GB
export NODE_OPTIONS="--max-old-space-size=6144" # Increase to 6 GB
export NODE_OPTIONS="--max-old-space-size=7168" # Increase to 7 GB
export NODE_OPTIONS="--max-old-space-size=8192" # Increase to 8 GB

# and so on...

# formula:
export NODE_OPTIONS="--max-old-space-size=[X * 1024]" # Increase to X GB

# Note: it doesn't have to be multiples of 1024.
# max-old-space-size can be any number of memory megabytes [MB] you have available.

Xem giá trị hiện tại của kích thước không gian tối đa [tính bằng MB]

Để xem giá trị hiện tại [không chính xác nhưng rất gần] của kích thước không gian tối đa [tính bằng MB], chạy trong thiết bị đầu cuối của bạn

node -e 'console.log[v8.getHeapStatistics[].heap_size_limit/[1024*1024]]'

Một vấn đề phổ biến trong khi làm việc trên dự án JavaScript Node.js là bộ JavaScript ra khỏi lỗi bộ nhớ. Lỗi này thường xảy ra khi bộ nhớ mặc định được phân bổ bởi hệ thống của bạn cho Node.js không đủ để chạy một dự án lớn.

Lỗi là phổ biến cho dù bạn chạy dự án của mình trên Windows, MacOS hoặc phân phối Linux như Ubuntu. May mắn thay, có một vài bản sửa lỗi dễ dàng có thể giúp giải quyết các bộ nhớ JavaScript ra khỏi lỗi bộ nhớ.

Bộ nhớ HEAP là gì?

Trước khi bạn xem xét sửa lỗi, thật hữu ích khi hiểu bộ nhớ heap là gì và cách các chương trình sử dụng nó.

Bộ nhớ được phân bổ trên đống hệ thống cũng được gọi là bộ nhớ được phân bổ động. Nó lên tới các lập trình viên để sử dụng bộ nhớ có sẵn khi họ thấy phù hợp. 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 so với khối được phân bổ mặc định. Điều này có thể khiến dự án của bạn bị sập và đăng nhập các bộ nhớ JavaScript ra khỏi lỗi bộ nhớ.

Cách sửa bộ nhớ JavaScript ra khỏi bộ nhớ trên Windows

Bất kể IDE của bạn là gì, thì JavaScript đã ra khỏi bộ nhớ.

Bạn có thể thêm một biến môi trường thông qua bảng điều khiển để tăng bộ nhớ được phân bổ cho dự án Node.js.

  1. Mở menu bắt đầu, tìm kiếm cài đặt hệ thống nâng cao và chọn khớp tốt nhất.Start menu, search for Advanced System Settings,and select the Best match.
  2. Từ hộp thoại, nhấp vào các biến môi trường, sau đó nhấp vào mới từ 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ạnEnvironment Variables, then click on New from either System variables or User variables. The former applies to all users on your computer, while the latter affects just your current account
  3. Trong trường Tên biến, nhập Node_Options. Trong trường giá trị biến, nhập--Max-cũ-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, nhân số lượng bạn yêu cầu trong GB với 1024 [giá trị biến cần phải có tính bằng MB].Variable name field enter NODE_OPTIONS. In the Variable value field enter --max-old-space-size=4096. This value will allocate 4GB of virtual memory to Node.js. To set a different value, multiply the amount you require in GB by 1024 [the variable value needs to be in MB].

  4. Nhấp vào OK để lưu các thay đổi của bạn, sau đó nhấp vào Áp dụng và cuối cùng bấm OK một lần nữa. Khởi động lại dự án của bạn cho các thay đổi để có hiệu lực.OK to save your changes, then click Apply and finally click OK once more. Restart your project for the changes to take effect.

Bạn cũng có thể đặt một biến môi trường thông qua thiết bị đầu cuối Windows PowerShell.

Khởi chạy một thiết bị đầu cuối PowerShell, nhập lệnh bên dưới và nhấn Enter:

$env:NODE_OPTIONS="--max-old-space-size=4096"

Nếu bạn chỉ muốn tăng bộ nhớ heap tạm thời, hãy chạy lệnh bên dưới trong thiết bị đầu cuối PowerShell trước khi chạy dự án của bạn:

set NODE_OPTIONS=--max-old-space-size=4096

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 NPM Run Dev hoặc tập lệnh của riêng bạn.npm run dev or your own script.

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 bất ngờ 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 sự cố hệ thống đáng kể.

Cách sửa chữa JavaScript H đống ra khỏi lỗi bộ nhớ trên MacOS và Linux

Trên macOS và Linux, sửa chữa bộ nhớ heap rất giống nhau. Bạn nên xuất một biến môi trường chỉ định lượng bộ nhớ ảo được phân bổ 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 nhau, hãy thay thế 4096 bằng số lượng cần thiết tính bằng MB.4096 with the required amount in MB.

Bạn có thể thêm lệnh trên vào tệp cấu hình của mình để tránh lặp lại quy trình. Để làm như vậy, hãy làm theo quy trình tương tự để thiết lập biến đường dẫn của bạn.

Tránh JavaScript hết lỗi bộ nhớ

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 các chương trình của bạn, đặc biệt là bằng ngôn ngữ cấp thấp.

Trong khi tăng bộ nhớ được phân bổ sẽ tạm thời khắc phục sự cố, bạn nên tìm nguyên nhân gốc và sửa nó.

Bộ nhớ heap JavaScript là gì?

Heap: Nó được sử dụng để lưu trữ các đối tượng và chức năng trong JavaScript.Động cơ không phân bổ một lượng bộ nhớ cố định.Thay vào đó, nó phân bổ nhiều không gian hơn theo yêu cầu.used to store objects and functions in JavaScript. The engine doesn't allocate a fixed amount of memory. Instead, it allocates more space as required.

HEAP có thể hết bộ nhớ không?

Lượng bộ nhớ heap được sử dụng bởi ứng dụng Java ảnh hưởng đến số lượng đối tượng có thể được phân bổ và kích thước của chúng.Nếu một đối tượng yêu cầu nhiều bộ nhớ hơn có sẵn trong đống, ứng dụng có thể gặp Java.Lang.Lỗi bộ nhớ .

Điều gì xảy ra nếu bộ nhớ heap đầy?

Khi đống trở nên đầy, rác được thu thập.Trong các đối tượng thu gom rác không còn được sử dụng được xóa, do đó tạo không gian cho các đối tượng mới.garbage is collected. During the garbage collection objects that are no longer used are cleared, thus making space for new objects.

Bài Viết Liên Quan

Chủ Đề