Tôi đã viết kịch bản tải cơ sở dữ liệu trong Coldfusion và tôi gặp sự cố khi tập lệnh từ từ hết bộ nhớ. Tôi đã chia từng tải bảng thành chủ đề riêng với <cfthread> và tôi đang gọi bộ thu gom rác khi bộ nhớ giảm xuống dưới 50% (đảm bảo có 30 giây giữa gc() cuộc gọi để ngăn bộ thu gom rác khỏi bộ nhớ hogging) .Tác động của bộ nhớ khi trả về truy vấn từ CFC
Tôi đã tạo CFC để giữ tất cả truy vấn cần thiết bởi tập lệnh. Kịch bản lệnh gọi hàm CFC thích hợp, sau đó trả về truy vấn, một số trong đó có kích thước lớn hơn 2 MB. Khi tôi nhìn vào Server Monitor trong khung nhìn chi tiết của trang Memory cho Active Threads, có vẻ như CFC của tôi đang giữ một bản sao của truy vấn trong bộ nhớ mặc dù tôi đã kiểm tra biến truy vấn và biến nằm ngoài phạm vi ở cuối của hàm. Ngoài ra, tôi có một bản sao của truy vấn trong bộ nhớ trong chủ đề của tôi. Vì vậy, tôi còn lại với những gì trông giống như hai bản sao của truy vấn trong bộ nhớ. Đây có thực sự là những gì đang xảy ra không? Nếu có, làm thế nào tôi có thể loại bỏ một bản sao của truy vấn khỏi bộ nhớ?
anychance bạn có thể đăng mã gc() của bạn ở đâu đó? Tôi rất muốn thấy cách tiếp cận của bạn. – Antony
Mã thu thập rác của tôi là http://www.fluentincode.com/2010/03/garbage-collection-in-coldfusion.html – stomcavage