Ruby's callcc
chụp tiếp tục hiện tại, sau đó có thể được gọi để khôi phục kiểm soát, nhưng không được gọi là dữ liệu. Tôi muốn nắm bắt sự tiếp tục hiện tại cùng với hình ảnh hiện tại của bộ nhớ.Điểm kiểm tra và khôi phục heap trong Ruby
Dường như với tôi việc chụp vùng lưu trữ không quá khó khăn; Tôi có thể dựa vào ObjectSpace::each_object
và ObjectSpace::dump_all
hoặc Marshal.dump
hoặc chỉ đơn giản là Object.clone
. Tuy nhiên, tôi không thấy bất kỳ cách đơn giản nào để khôi phục heap. Lý tưởng nhất, tôi muốn đi qua bản đồ object_id -> object
, khôi phục hình ảnh cũ của đối tượng cho mỗi object_id
(và thêm lại object_id
nếu đối tượng tương ứng đã được GC'd). Không ngạc nhiên, không có api cấp độ Ruby cho phép tôi làm điều này. Tôi tự hỏi nếu có bất kỳ móc cấp thấp để GC của Ruby mà tôi có thể sử dụng.
Bất kỳ trợ giúp nào được đánh giá cao, bao gồm các đề xuất về phương pháp thay thế.