Tôi phải đối mặt với một vấn đề lạ về xử lý bộ nhớ trong perl. Tôi đang làm việc trong một ứng dụng perl sử dụng cấu trúc băm khá lớn. Tôi đang gán các đối tượng ref và fro. Nhưng cuối cùng có vẻ như ngay cả khi tôi đang deallocating đối tượng và băm, việc sử dụng bộ nhớ là như nhau.Quản lý bộ nhớ trong perl
Đây là một ví dụ về các vấn đề:
my $hash = {};
.............
this ds gets populated with a lot of data ...
.......
{
my $obj = new Class("data"=>$hash);
.......
.......
......
}
#even undefing the $hash
undef $hash;
# I can expect some improvement in Memory Utilization, but its not happening
Tôi nghĩ rằng tôi đang làm một số sai lầm rất cơ bản. Bất kỳ ai có thể đề nghị?
Điều gì xảy ra trong trường hợp đối tượng? Khi một đối tượng nằm ngoài phạm vi, hàm hủy được gọi. Điều này sẽ vẫn giữ bộ nhớ của các biến từ vựng được xác định trong đối tượng? – Kallol
@Kallol, trường hợp đó không khác với biến bình thường nằm ngoài phạm vi, ngoại trừ việc bạn có thể thực hiện một số tùy chỉnh dọn dẹp đối tượng của mình. Bộ nhớ * sẽ * miễn phí cho Perl để sử dụng cho một thứ khác, nhưng Perl vẫn không đưa nó trở lại hệ thống. – dan1111
loại dọn dẹp theo yêu cầu nào có thể được thực hiện? – Kallol