V8 là một công cụ JavaScript mã nguồn mở được phát triển bởi dự án Chromium cho trình duyệt web Google Chrome. Nó được viết bằng C++. Ngày nay, nó được sử dụng trong nhiều dự án như Couchbase, MongoDB và Node. js
V8 trong nút. js
nút. js V8 mô-đun đại diện cho các giao diện và sự kiện dành riêng cho phiên bản V8. Nó cung cấp các phương thức để lấy thông tin về bộ nhớ heap thông qua v8. getHeapStatistic[] và v8. các phương thức getHeapSpaceStatistic[]
Để sử dụng mô-đun này, bạn cần sử dụng yêu cầu ['v8']
Nút. js v8. ví dụ getHeapStatistic[]
v8. Phương thức getHeapStatistics[] trả về số liệu thống kê về heap như tổng kích thước heap, kích thước heap đã sử dụng, giới hạn kích thước heap, tổng kích thước khả dụng, v.v.
Tập tin. v8-ví dụ1. js
Nút. js v8. getHeapSpaceStatistic[] Ví dụ
v8. getHeapSpaceStatistics[] trả về số liệu thống kê về không gian heap. Nó trả về một mảng gồm 5 đối tượng. không gian mới, không gian cũ, không gian mã, không gian bản đồ và không gian đối tượng lớn. Mỗi đối tượng chứa thông tin về tên không gian, kích thước không gian, kích thước không gian được sử dụng, kích thước không gian có sẵn và kích thước không gian vật lý
Tập tin. v8-ví dụ2. js
Giới hạn bộ nhớ của V8 trong Node. js
Hiện tại, mặc định v8 có giới hạn bộ nhớ là 512mb trên hệ thống 32-bit và 1gb trên hệ thống 64-bit. Bạn có thể tăng giới hạn bằng cách đặt --max-old-space-size tối đa ~1gb cho 32-bit và ~1. 7gb cho hệ thống 64-bit. Nhưng bạn nên chia quy trình đơn lẻ của mình thành nhiều công nhân nếu bạn đang đạt đến giới hạn bộ nhớ
Trước khi tìm hiểu sâu về cốt lõi của V8 của Chrome, trước tiên, hãy tìm hiểu các nguyên tắc cơ bản của chúng tôi. Tất cả các hệ thống của chúng tôi bao gồm các bộ vi xử lý, thứ đang nằm bên trong máy tính của bạn ngay bây giờ và cho phép bạn đọc thông tin này
Bộ vi xử lý là những cỗ máy nhỏ hoạt động với tín hiệu điện và cuối cùng thực hiện công việc. Chúng tôi cung cấp cho bộ vi xử lý các hướng dẫn. Các hướng dẫn bằng ngôn ngữ mà bộ vi xử lý có thể giải thích. Các bộ vi xử lý khác nhau nói các ngôn ngữ khác nhau. Một số phổ biến nhất là IA-32, x86–64, MIPS và ARM. Các ngôn ngữ này tương tác trực tiếp với phần cứng nên mã được viết trong đó được gọi là mã máy. Mã mà chúng tôi viết trên máy tính của mình được chuyển đổi hoặc biên dịch thành mã máy
Đó là mã máy trông như thế nào
Nguồn. Google
Nó bao gồm các hướng dẫn được thực hiện tại một phần bộ nhớ cụ thể trong hệ thống của bạn ở mức thấp. Bạn phải cảm thấy may mắn vì không phải viết tất cả những thứ này để chạy chương trình của mình
Ngôn ngữ cấp cao được trừu tượng hóa từ ngôn ngữ máy. Ở cấp độ trừu tượng bên dưới, bạn có thể thấy mức độ trừu tượng của JavaScript so với cấp độ máy. C/C++ tương đối gần với phần cứng hơn và do đó nhanh hơn nhiều so với các ngôn ngữ cấp cao khác
Bây giờ trở lại với động cơ V8. V8 là một Javascript engine mã nguồn mở mạnh mẽ được cung cấp bởi Google. Vậy Javascript Engine thực sự là gì?
Có các công cụ JavaScript khác nhau bao gồm Rhino, và SpiderMonkey. Các công cụ này tuân theo Tiêu chuẩn ECMAScript. ECMAScript xác định tiêu chuẩn cho ngôn ngữ kịch bản. JavaScript dựa trên tiêu chuẩn ECMAScript. Các tiêu chuẩn này xác định cách thức hoạt động của ngôn ngữ và những tính năng mà nó nên có. Bạn có thể tìm hiểu thêm về ECMAScript tại đây
Nguồn. Google
Động cơ Chrome V8
- Công cụ V8 được viết bằng C ++ và được sử dụng trong Chrome và Nodejs
- Nó triển khai ECMAScript như được chỉ định trong ECMA-262
- Động cơ V8 có thể chạy độc lập, chúng tôi có thể nhúng nó vào chương trình C++ của riêng mình
Hãy để chúng tôi hiểu điểm cuối cùng tốt hơn một chút. V8 có thể chạy độc lập và đồng thời chúng tôi có thể thêm triển khai chức năng của riêng mình trong C++ để thêm các tính năng mới cho JavaScript
Ví dụ. print['hello world']
không phải là một câu lệnh hợp lệ trong Node. js. Nó sẽ báo lỗi nếu chúng ta biên dịch nó. Nhưng chúng ta có thể thêm triển khai chức năng in của riêng mình trong C++ trên V8, mã nguồn mở tại Github, do đó làm cho chức năng in hoạt động nguyên bản. Điều này cho phép JavaScript hiểu nhiều hơn những gì tiêu chuẩn ECMAScript chỉ định mà JavaScript nên hiểu
Đây là một tính năng mạnh mẽ vì C ++ có nhiều tính năng hơn với tư cách là ngôn ngữ lập trình so với JavaScript, vì nó gần với phần cứng hơn như xử lý các tệp và thư mục trên ổ cứng
Việc cho phép chúng tôi viết mã bằng C++ và cung cấp mã đó cho JavaScript giúp chúng tôi có thể thêm nhiều tính năng hơn vào JavaScript
Nút. js bản thân nó là một triển khai C++ của công cụ V8 cho phép lập trình phía máy chủ và các ứng dụng mạng
Bây giờ chúng ta hãy xem xét một số mã nguồn mở bên trong công cụ. Để làm điều này, bạn cần vào v8/samples/shell. thư mục cc
Tại đây, bạn có thể thấy việc triển khai các chức năng khác nhau, chẳng hạn như Print
và Read,
vốn không có sẵn trong Node. js
Dưới đây, bạn có thể thấy việc triển khai hàm Print
. Bất cứ khi nào hàm print[]
được gọi trong Nút. js, nó sẽ tạo một cuộc gọi lại và chức năng sẽ được thực thi
Tương tự, chúng ta có thể thêm việc triển khai các chức năng mới khác nhau của riêng mình trong C ++ bên trong V8 để Node có thể hiểu được. js
Đó chắc chắn là quá nhiều để có thể hiểu được một câu nói đơn giản và đó là khối lượng công việc mà động cơ V8 thực hiện dưới mui xe
Bây giờ bạn phải hiểu rõ về cách Node. js hoạt động và công cụ Chrome V8 thực sự là gì