Tôi có một cảnh lớn với nhiều Mesh và MorphAnimMesh. Tôi muốn giải phóng bộ nhớ khi các mắt lưới bị loại bỏ. Nếu tôi biết đây là cách tốt nhất để làm:Quản lý bộ nhớ ba js
for (var i = scene.children.length - 1; i >= 0 ; i --) {
var obj = scene.children[i];
scene.remove(obj);
obj.deallocate();
obj.geometry.deallocate();
obj.material.deallocate();
obj.material.map.deallocate();
}
nếu tôi kiểm tra việc sử dụng bộ nhớ tại trình quản lý tác vụ sau này, không có gì thay đổi. (cố gắng chờ một vài phút cho GC nhưng không có gì.) Ảnh chụp bộ nhớ Google Chrome hiển thị các đối tượng vẫn còn đó. morphTargets trong BA.Geometry @ 1862203, v.v.
Cố gắng đặt obj thành rỗng, nhưng vẫn không giảm bộ nhớ.
Bất kỳ ý tưởng nào tôi đang làm sai?
Trò chơi có cấp độ và người chơi có thể thay đổi từ trò chơi này sang người khác. Sau một vài thay đổi, việc sử dụng bộ nhớ tăng lên rất cao. Đó là lý do tại sao tôi muốn loại bỏ tất cả các đối tượng từ bộ nhớ trước khi thay đổi cấp độ.
Cố gắng này, nhưng không có gì thay đổi. Nếu tôi có một heap snapshot trong chrome các đối tượng, mảng (ví dụ: morphTargets trong BA.Geometry @ 1862203) vẫn còn đó và việc sử dụng bộ nhớ là như nhau. – user974250
Có lẽ bạn đang giữ một ref cho lưới, kết cấu hoặc tài liệu ở đâu đó? – Neil
điều về những ví dụ này là chúng không liên quan đến kết cấu –