Khung nguồn mở của Facebook để phát hiện rò rỉ bộ nhớ trong JavaScript

Facebook (bị cấm ở Liên bang Nga) đã mở mã nguồn của bộ công cụ memlab, được thiết kế để phân tích các phần trạng thái của bộ nhớ được phân bổ động (heap), xác định các chiến lược tối ưu hóa quản lý bộ nhớ và xác định rò rỉ bộ nhớ xảy ra khi thực thi mã trong JavaScript. Mã được mở theo giấy phép MIT.

Khung được tạo ra để phân tích lý do tiêu thụ bộ nhớ cao khi làm việc với các trang web và ứng dụng web. Ví dụ: memlab được sử dụng để phân tích mức tiêu thụ bộ nhớ khi sử dụng phiên bản mới của trang web Facebook.com, giúp xác định các rò rỉ dẫn đến trình duyệt bị lỗi ở phía máy khách do hết bộ nhớ trống.

Nguyên nhân gây rò rỉ bộ nhớ khi thực thi mã JavaScript có thể là các tham chiếu đối tượng bị ẩn ngăn trình thu thập rác giải phóng bộ nhớ mà đối tượng chiếm giữ, lưu các giá trị vào bộ nhớ đệm không khôn ngoan hoặc thực hiện cuộn vô hạn mà không loại bỏ các phần tử danh sách cũ. Ví dụ: trong mã bên dưới trong Chrome, xảy ra rò rỉ bộ nhớ do đối tượng “obj”, mặc dù thực tế là nó được gán giá trị null, vì Chrome lưu trữ các tham chiếu nội bộ đến đối tượng đầu ra để kiểm tra sau trong bảng điều khiển web . var obj = {}; console.log(obj); obj = null;

Các tính năng chính của memlab:

  • Phát hiện rò rỉ bộ nhớ trong trình duyệt. Memlab cho phép bạn tự động so sánh ảnh chụp nhanh trạng thái bộ nhớ động, phát hiện rò rỉ bộ nhớ và tổng hợp kết quả.
  • API hướng đối tượng để lặp lại vùng heap, cho phép bạn triển khai các thuật toán phát hiện rò rỉ của riêng mình và triển khai các hệ thống để phân tích ảnh chụp nhanh trạng thái vùng heap. Phân tích vùng heap được hỗ trợ cho các trình duyệt dựa trên công cụ Chrome, cũng như cho các nền tảng Node.js, Electron và Hermes.
  • Giao diện dòng lệnh và API để tìm cơ hội tối ưu hóa việc sử dụng bộ nhớ.
  • Một hệ thống xác nhận dành cho Node.js cho phép bạn tạo các bài kiểm tra đơn vị và chạy các chương trình dựa trên Node.js để tạo các phần trạng thái của riêng bạn, kiểm tra bộ nhớ của bạn hoặc viết các bài kiểm tra xác nhận mở rộng.

Nguồn: opennet.ru

Thêm một lời nhận xét