2012-04-19 21 views
7

Trong trình thám hiểm Internet, chúng tôi có thể bắt buộc thu gom rác Javascript để thực thi bằng phương pháp này: CollectGarbage();Có cách nào để buộc Bộ gom rác trong trình duyệt webkit không?

Phương thức đó không được xác định trên Firefox. Bạn có biết nếu có một số loại tương đương?

Cảm ơn.

+1

Bạn đang cố gắng giải quyết vấn đề gì? Việc thu gom rác xảy ra trên chính nó một cách tự động ngay sau khi chuỗi JS của bạn kết thúc luồng thực hiện hiện tại của nó. Tại sao bạn nghĩ rằng bạn cần chạy bộ sưu tập rác một cách rõ ràng? – jfriend00

+0

Ditto với những gì jfriend00 đã nói và bạn đã gắn thẻ thẻ này là [rò rỉ bộ nhớ], bạn có đang cố gắng tìm rò rỉ bộ nhớ không? Vấn đề thực tế bạn cần phải giải quyết là gì? –

+1

Xin chào, vấn đề của tôi là tôi có một trò chơi HTML5 tạo ra rất nhiều rác và tôi muốn gọi GC trong các tình huống được kiểm soát (như menu tạm dừng) – xus

Trả lời

-2

thử Chrome: nếu bạn khởi chạy từ dòng lệnh/thiết bị đầu cuối với --js-flags = "- expose-gc", thì nó cung cấp window.gc(). Firefox Tôi nghĩ rằng yêu cầu nhấp vào nút "Bộ nhớ miễn phí" trong khoảng: bộ nhớ. Opera có window.opera.collect(). Cạnh có cửa sổ.CollectGarbage(). Safari, không xác định.

+0

cảm ơn, điều này có được hỗ trợ chính thức bởi các tiêu chuẩn javascript không? – xus

+4

Không hoạt động trong FF và Chrome. – schlingel

+0

[liên kết] http: // ed-multimedia.com/2011/04/04/javascript-memory-leak/đây là trang tham chiếu –

1

Tôi đã chỉ cố gắng để buộc GC và nó có vẻ như vậy không phụ thuộc vào trình duyệt thực tế tương đối tốt về làm như vậy là để chạy đoạn mã sau:

function gc(max) { 
    var arr = []; 
    for (var i = 0; i < max; i++) { 
     arr.push(i); 
    } 
    return arr.length; 
    } 
    for (var i = 0; ; i++) { 
    // repeat until you have enough: 
    gc(Math.pow(2, i)); 
    } 

Tất nhiên, một vấn đề là biết khi nào nên ngừng gọi gc (...): cho một trong những nhu cầu một số cách bên ngoài để phát hiện GC là thành công hơn. Trong trường hợp của tôi, tôi đã sử dụng WebView nhúng và tôi thực sự có thể kiểm tra trước khi buộc vòng tiếp theo với mảng lớn hơn.

1

Tôi không chắc chắn nếu điều này không tắt chủ đề nhưng có add-on cho firefox được gọi là FreeMemory (https://addons.mozilla.org/en-US/firefox/addon/freememory/) để chạy bộ sưu tập rác hoặc chu kỳ mà không truy cập: ngăn bộ nhớ, với bộ hẹn giờ có thể định cấu hình. Tôi tin rằng có những lựa chọn thay thế cho các trình duyệt khác trên mạng.

1

Truy cập about:memory.

Từ trang của documentation on MDN:

about:memory is a special page within Firefox that lets you view, save, 
load, and diff detailed measurements of Firefox's memory usage. It also 
lets you do other memory-related operations like trigger GC and CC 
2

(Không chỉ giới hạn câu trả lời này để các trình duyệt dựa trên Webkit ...)

  • Chrome: nếu bạn khởi động nó từ một dòng lệnh/thiết bị đầu cuối với --js-flags="--expose-gc" , sau đó nó cung cấp window.gc().
  • Firefox Tôi nghĩ rằng yêu cầu nhấp vào nút "Bộ nhớ miễn phí" trong about:memory.
  • Opera có window.opera.collect().
  • Cạnh có window.CollectGarbage().
  • Safari, không xác định.

Lưu ý rằng bạn không nên chạy thủ công GC. Tôi chỉ đăng bài này vì nó rất hữu ích cho việc thử nghiệm phát triển.

Các vấn đề liên quan