Hướng dẫn what cause javascript heap out of memory? - điều gì gây ra đống javascript hết bộ nhớ?
Hôm nay tôi đã chạy tập lệnh của mình để lập chỉ mục hệ thống tập tin để làm mới chỉ mục tệp RAID và sau 4h, nó đã bị lỗi với lỗi sau: Show
Máy chủ được trang bị RAM 16GB và hoán đổi SSD 24GB. Tôi rất nghi ngờ kịch bản của tôi vượt quá 36GB bộ nhớ. Ít nhất nó không nên Tập lệnh tạo chỉ mục của các tệp được lưu trữ dưới dạng mảng các đối tượng với siêu dữ liệu (ngày sửa đổi, quyền, v.v., không có dữ liệu lớn) Đây là mã tập lệnh đầy đủ: http://pastebin.com/mjad76c3 Tôi đã thử nghiệm các vấn đề về nút kỳ lạ trong quá khứ với tập lệnh này, những gì đã buộc tôi. Chia chỉ mục thành nhiều tệp khi nút bị trục trặc khi làm việc trên các tệp lớn như chuỗi. Có cách nào để cải thiện quản lý bộ nhớ NodeJS với các bộ dữ liệu khổng lồ không? Hỏi ngày 25 tháng 7 năm 2016 lúc 2:45Jul 25, 2016 at 2:45
2 Nếu tôi nhớ chính xác, có một giới hạn tiêu chuẩn nghiêm ngặt cho việc sử dụng bộ nhớ trong V8 khoảng 1,7 GB, nếu bạn không tăng thủ công. Trong một trong những sản phẩm của chúng tôi, chúng tôi đã theo dõi giải pháp này trong tập lệnh triển khai của chúng tôi:
Cũng sẽ có một lệnh không gian mới nhưng như tôi đã đọc ở đây: Bộ sưu tập Bam-tour-of-of-of-V8, không gian mới chỉ thu thập dữ liệu ngắn hạn mới được tạo và không gian cũ chứa tất cả các cấu trúc dữ liệu được tham chiếu nên có trong Trường hợp của bạn là lựa chọn tốt nhất.
Đã trả lời ngày 25 tháng 7 năm 2016 lúc 5:29Jul 25, 2016 at 5:29
FelixfelixFelix 5.1411 Huy hiệu vàng9 Huy hiệu bạc17 Huy hiệu đồng1 gold badge9 silver badges17 bronze badges 8 Nếu bạn muốn tăng mức sử dụng bộ nhớ của nút trên toàn cầu - không chỉ một tập lệnh duy nhất, bạn có thể xuất biến môi trường, như thế này: 1 1Sau đó, bạn không cần chơi với các tệp khi chạy các bản dựng như 2.Đã trả lời ngày 23 tháng 11 năm 2018 lúc 8:56Nov 23, 2018 at 8:56
Maksim Luzikmaksim LuzikMaksim Luzik 5.4434 Huy hiệu vàng35 Huy hiệu bạc56 Huy hiệu Đồng4 gold badges35 silver badges56 bronze badges 3 Chỉ trong trường hợp bất kỳ ai chạy vào điều này trong một môi trường mà họ không thể đặt các thuộc tính nút trực tiếp (trong trường hợp của tôi là một công cụ xây dựng):
Bạn có thể đặt các tùy chọn nút bằng biến môi trường nếu bạn không thể truyền chúng trên dòng lệnh. Đã trả lời ngày 18 tháng 9 năm 2018 lúc 15:55Sep 18, 2018 at 15:55
Kamiel Wanrooijkamiel WanrooijKamiel Wanrooij Huy hiệu vàng 12k635 Huy hiệu bạc43 Huy hiệu đồng6 gold badges35 silver badges43 bronze badges 3 Dưới đây là một số giá trị cờ để thêm một số thông tin bổ sung về cách cho phép nhiều bộ nhớ hơn khi bạn khởi động máy chủ nút của mình. 1GB - 8GB
Đã trả lời ngày 13 tháng 2 năm 2019 lúc 17:12Feb 13, 2019 at 17:12
Nicholas Porternicholas PorterNicholas Porter 2.2282 Huy hiệu vàng20 Huy hiệu bạc34 Huy hiệu đồng2 gold badges20 silver badges34 bronze badges 4 Tôi chỉ phải đối mặt với vấn đề tương tự với phiên bản EC2 của mình T2.micro có bộ nhớ 1 GB. Tôi đã giải quyết vấn đề bằng cách tạo tệp hoán đổi bằng URL này và đặt biến môi trường sau. 1Cuối cùng vấn đề đã biến mất. Tôi hy vọng điều đó sẽ hữu ích cho tương lai. Đã trả lời ngày 17 tháng 4 năm 2020 lúc 2:57Apr 17, 2020 at 2:57
4 Tôi đã đấu tranh với điều này ngay cả sau khi thiết lập--Max-cũ-Space-Size. Sau đó, tôi nhận ra cần đặt các tùy chọn--Max-Old-Space-Size trước kịch bản nghiệp. Ngoài ra, tốt nhất để chỉ định cả hai cú pháp--Max-cũ-Space-Size và--Max_old_Space_Size của tôi tập lệnh của tôi cho Karma:
Tham khảo https://github.com/angular/angular-cli/issues/1652 Đã trả lời ngày 22 tháng 6 năm 2017 lúc 8:43Jun 22, 2017 at 8:43
Duchuyduchuyduchuy 5864 Huy hiệu bạc9 Huy hiệu Đồng4 silver badges9 bronze badges 4 Tôi đã gặp phải vấn đề này khi cố gắng gỡ lỗi với VSCode, vì vậy chỉ muốn thêm đây là cách bạn có thể thêm đối số vào thiết lập gỡ lỗi của bạn. Bạn có thể thêm nó vào thuộc tính 4 của cấu hình của bạn trong 5.Xem ví dụ dưới đây.
Đã trả lời ngày 20 tháng 6 năm 2017 lúc 1:26Jun 20, 2017 at 1:26
Astr-oAstr-oAstr-o 4954 Huy hiệu bạc10 Huy hiệu đồng4 silver badges10 bronze badges 3 Tôi đã phải đối mặt với vấn đề tương tự gần đây và gặp phải chủ đề này nhưng vấn đề của tôi là với ứng dụng 6. Dưới đây thay đổi trong lệnh bắt đầu nút đã giải quyết các vấn đề của tôi.Cú pháp
Thí dụ
Tại sao kích thước là 16000 trong kích thước không gian tối đa?Về cơ bản, nó thay đổi tùy thuộc vào bộ nhớ được phân bổ cho chuỗi đó và cài đặt nút của bạn. Làm thế nào để xác minh và cung cấp kích thước đúng?Điều này về cơ bản là ở trong động cơ của chúng tôi 7. Mã dưới đây giúp bạn hiểu kích thước heap của động cơ V8 Node V8 của bạn.
Đã trả lời ngày 13 tháng 8 năm 2019 lúc 15:24Aug 13, 2019 at 15:24
Venkat.RVenkat.RVenkat.R 7.2805 Huy hiệu vàng40 Huy hiệu bạc63 Huy hiệu Đồng5 gold badges40 silver badges63 bronze badges Tôi chỉ muốn thêm rằng trong một số hệ thống, thậm chí tăng giới hạn bộ nhớ nút với 8, nó không đủ và có một lỗi hệ điều hành như thế này:
Trong trường hợp này, có lẽ là vì bạn đã đạt được MAX MMAP cho mỗi quá trình. Bạn có thể kiểm tra MAX_MAP_COUNT bằng cách chạy 0và tăng nó bằng cách chạy 1và sửa nó để không được đặt lại sau khi khởi động lại bằng cách thêm dòng này 2Trong tệp 9.Kiểm tra ở đây để biết thêm thông tin. Một phương pháp tốt để phân tích lỗi là chạy quy trình với 0 3Đã trả lời ngày 26 tháng 1 năm 2020 lúc 23:55Jan 26, 2020 at 23:55
Jbaylinajbaylinajbaylina 4.1981 Huy hiệu vàng29 Huy hiệu bạc39 Huy hiệu đồng1 gold badge29 silver badges39 bronze badges 2
Tệp 5 của bạn trông như thế này sau khi thay đổi: 4Đã trả lời ngày 19 tháng 10 năm 2018 lúc 5:30Oct 19, 2018 at 5:30
Umang Patwaumang PatwaUmang Patwa 2.5853 huy hiệu vàng29 Huy hiệu bạc40 Huy hiệu đồng3 gold badges29 silver badges40 bronze badges 0 Gần đây, trong một trong những dự án của tôi đã gặp phải vấn đề tương tự. Đã thử một vài điều mà bất cứ ai cũng có thể thử làm gỡ lỗi để xác định nguyên nhân gốc rễ:
Ở đây 6 Tôi đã xác định cho ứng dụng của mình là 1536 (vì bộ nhớ pod Kubernetes của tôi là giới hạn 2 GB, yêu cầu 1,5 GB)Vì vậy, luôn luôn xác định 6 dựa trên giới hạn cơ sở hạ tầng/kiến trúc frontend của bạn (ít hơn một chút so với giới hạn)Một chú thích nghiêm ngặt ở đây trong lệnh trên, sử dụng
6
Đã trả lời ngày 2 tháng 4 năm 2021 lúc 5:02Apr 2, 2021 at 5:02
Sidvermasidvermasidverma 1.08312 Huy hiệu bạc22 Huy hiệu đồng12 silver badges22 bronze badges Tôi sẽ đề cập đến 2 loại giải pháp. Giải pháp của tôi: Trong trường hợp của tôi, tôi thêm điều này vào các biến môi trường của mình: 9Nhưng ngay cả khi tôi khởi động lại máy tính của mình, nó vẫn không hoạt động. Thư mục dự án của tôi nằm trong d: \ đĩa. Vì vậy, tôi loại bỏ dự án của mình thành C: \ Disk và nó đã hoạt động. Giải pháp của đồng đội của tôi: Cấu hình Pack.Json cũng được hoạt động. 0Đã trả lời ngày 10 tháng 8 năm 2021 lúc 13:09Aug 10, 2021 at 13:09
Cansucansucansu 1.0408 Huy hiệu bạc21 Huy hiệu đồng8 silver badges21 bronze badges 1 Đối với những người mới bắt đầu khác như tôi, người không tìm thấy bất kỳ giải pháp phù hợp nào cho lỗi này, hãy kiểm tra phiên bản nút được cài đặt (x32, x64, x86). Tôi có CPU 64 bit và tôi đã cài đặt phiên bản nút x86, gây ra lỗi 0.node version installed (x32, x64, x86). I have a 64-bit CPU and I've installed x86 node version, which caused the 0 error.
Đã trả lời ngày 22 tháng 9 năm 2020 lúc 22:33Sep 22, 2020 at 22:33
Nếu bạn muốn thay đổi bộ nhớ trên toàn cầu cho nút (Windows), hãy đến Cài đặt hệ thống nâng cao -> Biến môi trường -> Biến người dùng mới 1Đã trả lời ngày 23 tháng 9 năm 2019 lúc 14:38Sep 23, 2019 at 14:38
Ahmed Aboudahmed AboudAhmed Aboud 1.14413 Huy hiệu bạc19 Huy hiệu đồng13 silver badges19 bronze badges 0 Bạn cũng có thể thay đổi các biến môi trường của cửa sổ bằng: 2Đã trả lời ngày 17 tháng 10 năm 2020 lúc 17:47Oct 17, 2020 at 17:47
FiringblanksfiresblanksFiringBlanks 1.8904 Huy hiệu vàng30 Huy hiệu bạc46 Huy hiệu đồng4 gold badges30 silver badges46 bronze badges Unix (Mac OS) (Mac OS)
Xin lưu ý rằng chúng tôi có thể đặt số lượng megabyte được truyền vào bất cứ thứ gì chúng tôi thích, với điều kiện hệ thống của chúng tôi có đủ bộ nhớ (ở đây chúng tôi đang vượt qua 8192 megabyte khoảng 8 GB).
Linux (Ubuntu) (Ubuntu)
Các bước còn lại tương tự với các bước Mac từ phía trên, ngoại trừ chúng tôi rất có thể sẽ sử dụng 8 theo mặc định (trái ngược với ~/.zshrc). Vì vậy, những giá trị này sẽ cần phải được thay thế!Liên kết đến tài liệu nodejs Đã trả lời ngày 14 tháng 2 lúc 5:30Feb 14 at 5:30
JSON C11JSON C11JSON C11 10,6K7 Huy hiệu vàng77 Huy hiệu bạc64 Huy hiệu đồng7 gold badges77 silver badges64 bronze badges Tôi đã gặp lỗi này trên AWS đàn hồi Beanstalk, loại phiên bản nâng cấp từ T3.Micro (tầng miễn phí) lên T3.Small đã sửa lỗi Đã trả lời ngày 9 tháng 12 năm 2021 lúc 9:31Dec 9, 2021 at 9:31
Atazminatazminatazmin Phù hiệu vàng 3.9131 Huy hiệu bạc18 Huy hiệu đồng1 gold badge22 silver badges18 bronze badges Trong trường hợp của tôi, tôi đã nâng cấp phiên bản Node.js lên mới nhất (phiên bản 12.8.0) và nó hoạt động như một sự quyến rũ.
Aplet123 32.2k1 Huy hiệu vàng23 Huy hiệu bạc 50 Huy hiệu Đồng1 gold badge23 silver badges50 bronze badges Đã trả lời ngày 12 tháng 6 năm 2020 lúc 8:06Jun 12, 2020 at 8:06
3 Sử dụng tùy chọn 9. Nó sẽ tập trung vào việc sử dụng ít RAM hơn.Đã trả lời ngày 2 tháng 5 năm 2021 lúc 1:15May 2, 2021 at 1:15
Vini Dalvinovini DalvinoVini Dalvino 4751 Huy hiệu vàng6 Huy hiệu bạc21 Huy hiệu đồng1 gold badge6 silver badges21 bronze badges 1 Nâng cấp nút lên phiên bản mới nhất. Tôi đã ở Node 6.6 với lỗi này và nâng cấp lên 8.9.4 và vấn đề đã biến mất. Đã trả lời ngày 12 tháng 1 năm 2018 lúc 7:01Jan 12, 2018 at 7:01
Tôi đã trải qua vấn đề tương tự ngày hôm nay. Vấn đề đối với tôi là, tôi đã cố gắng nhập nhiều dữ liệu vào cơ sở dữ liệu trong dự án NextJS của mình.NextJS project. Vì vậy, những gì tôi đã làm là, tôi đã cài đặt gói Win-Node-Env như thế này: 3Bởi vì máy phát triển của tôi là Windows. Tôi đã cài đặt nó cục bộ hơn là toàn cầu. Bạn có thể cài đặt nó trên toàn cầu cũng như thế này: 0Windows. I installed it locally than
globally. You can install it globally also like this: 0Và sau đó trong tệp 1 của dự án NextJS của tôi, tôi đã thêm một tập lệnh khởi động khác như sau: 4Ở đây, đang vượt qua tùy chọn nút, tức là. Đặt 8GB làm giới hạn. Vì vậy, tệp 1 của tôi có vẻ như thế này: 5Và sau đó tôi chạy nó như thế này: 6Đối với tôi, tôi chỉ phải đối mặt với vấn đề trên máy phát triển của mình (vì tôi đang thực hiện việc nhập dữ liệu lớn). Do đó giải pháp này. Được nghĩ để chia sẻ điều này vì nó có thể có ích cho người khác. Đã trả lời ngày 8 tháng 3 lúc 21:44Mar 8 at 21:44
Tôi đã gặp vấn đề tương tự trong máy Windows và tôi nhận thấy rằng vì một số lý do, nó không hoạt động trong git bash, nhưng nó hoạt động trong shell power shell Đã trả lời ngày 30 tháng 8 lúc 10:03Aug 30 at 10:03
Chỉ trong trường hợp nó có thể giúp mọi người gặp sự cố này trong khi sử dụng các ứng dụng NodeJS tạo ra ghi nhật ký nặng, một đồng nghiệp đã giải quyết vấn đề này bằng cách đưa (các) đầu ra tiêu chuẩn vào một tệp. Đã trả lời ngày 4 tháng 4 năm 2018 lúc 8:39Apr 4, 2018 at 8:39
Adrien Jolyadrien JolyAdrien Joly 4.8504 Huy hiệu vàng26 Huy hiệu bạc43 Huy hiệu Đồng4 gold badges26 silver badges43 bronze badges Nếu bạn đang cố gắng khởi chạy không phải 9, mà là một số mềm khác, ví dụ 4, bạn có thể sử dụng biến môi trường và gói 5: 7Đã trả lời ngày 30 tháng 4 năm 2019 lúc 1:50Apr 30, 2019 at 1:50
PiterdenpiterdenPiterden 7555 Huy hiệu bạc16 Huy hiệu Đồng5 silver badges16 bronze badges Đối với gói dự án Angular, tôi đã thêm dòng dưới đây vào tệp pakage.json của tôi trong phần Scripts.added the below line to my pakage.json file in the scripts section. 8Bây giờ, để gói mã của mình, tôi sử dụng 6 thay vì 7hi vọng điêu nay co ich! Đã trả lời ngày 4 tháng 10 năm 2019 lúc 16:00Oct 4, 2019 at 16:00
rgantlargantlargantla 1.8808 huy hiệu bạc16 huy hiệu đồng8 silver badges16 bronze badges Đối với 8, đây là cách tôi đã sửaTrong 9, thẻ 0 bên trong thêm cái này 9Bây giờ trong 1 thay vì sử dụng 2 chỉ cần sử dụng 0Nếu bạn muốn sử dụng cấu hình này cho 3 chỉ cần xóa 4 khỏi cả 3 nơiĐã trả lời ngày 12 tháng 3 năm 2021 lúc 17:07Mar 12, 2021 at 17:07
R15R15R15 12K14 Huy hiệu vàng83 Huy hiệu bạc148 Huy hiệu đồng14 gold badges83 silver badges148 bronze badges Nếu bất kỳ câu trả lời nào không hoạt động cho bạn, hãy kiểm tra nút đã cài đặt của bạn nếu nó tương thích (tức là 32 bit hoặc 64 bit) với hệ thống của bạn. Thông thường loại lỗi này xảy ra do các phiên bản nút và hệ điều hành không tương thích và thiết bị đầu cuối/hệ thống sẽ không cho bạn biết về điều đó nhưng sẽ giúp bạn thoát khỏi lỗi bộ nhớ. Đã trả lời ngày 4 tháng 6 năm 2021 lúc 14:01Jun 4, 2021 at 14:01
Shoaib iqbalshoaib iqbalShoaib Iqbal 2.2004 huy hiệu vàng24 Huy hiệu bạc47 Huy hiệu đồng4 gold badges24 silver badges47 bronze badges Trong trường hợp của tôi, tôi đã chạy 5 trên phiên bản trước của nút, sau một ngày nào đó tôi đã nâng cấp phiên bản nút và RAM 5 cho một vài mô -đun. Sau đó, tôi đã nhận được lỗi này. Để khắc phục sự cố này, tôi đã xóa thư mục node_module khỏi mỗi dự án và chạy lại 5.Hy vọng điều này có thể khắc phục vấn đề. Lưu ý: Điều này đã xảy ra trên máy cục bộ của tôi và nó chỉ được sửa trên máy cục bộ. Đã trả lời ngày 2 tháng 4 năm 2019 lúc 7:16Apr 2, 2019 at 7:16
GampeshgampeshGampesh 3.7862 huy hiệu vàng11 Huy hiệu bạc8 Huy hiệu đồng2 gold badges11 silver badges8 bronze badges Nếu bạn có bộ nhớ hoặc RAM giới hạn, thì hãy tìm lệnh sau.
Nó sẽ có thể khởi chạy ứng dụng. Ví dụ của tôi, nó cần RAM 16GB. Nhưng tôi có thể chạy với RAM 8GB.
Dharman ♦♦ 28.5K21 Huy hiệu vàng78 Huy hiệu bạc129 Huy hiệu đồng21 gold badges78 silver badges129 bronze badges Đã trả lời ngày 8 tháng 6 năm 2021 lúc 16:18Jun 8, 2021 at 16:18
Tại sao JavaScript ra khỏi bộ nhớ xảy ra?Điều này thường xảy ra trên các dự án lớn hơn trong đó lượng bộ nhớ mặc định được phân bổ bởi nút (1.5GB) là không đủ để hoàn thành lệnh thành công..
Bộ nhớ heap của JS 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.
Làm thế nào tăng kích thước heap javascript?Sử dụng cờ--Max-Old-Space-Size khi chạy ứng dụng Node.js để tăng đống bộ nhớ có sẵn.Lưu ý rằng cờ cần đến trước khi gọi tệp bằng lệnh nút. js application to increase the available memory heap. Note that the flag needs to come before calling the file with the node command.
Đ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. |