- ehcache 2,5
- timeToIdleSeconds = "1800" (30 phút), vì vậy tôi hy vọng yếu tố để đuổi sau 30 phút là nhàn rỗi
- 30 phút sau khi sử dụng phần tử cuối cùng Tôi vẫn có thể thấy bộ nhớ cache có đầy đủ các thành phần
- Buộc GC và tham gia hiển thị kết xuất đống, các phần tử đó vẫn còn trong bộ nhớ
- getSize() trả về số dương và getKeys() trả về các khóa như mong đợi (getKeys() không kiểm tra các yếu tố hết hạn)
- nhận được phần tử cụ thể, mặc dù kết quả trong giá trị NULL, có nghĩa là nó đã hết hạn.
- getKeysWithExpiryCheck() hiển thị, bộ nhớ cache đó trống và tất cả các phần tử đã bị loại bỏ và bị loại bỏ
Buộc GC và tham gia chương trình kết xuất đống, phần tử được thu thập hết bộ nhớ.ehcache không loại bỏ phần tử từ bộ nhớ trên đuổi
maxEntriesLocalHeap="10000" eternal="false" statistics="true" overflowToDisk="false" timeToIdleSeconds="1800" memoryStoreEvictionPolicy="LFU" transactionalMode="off"
Từ trên tôi thấy, đó ehcache tạo ấn tượng, đó là yếu tố hết hạn có thể dẫn Logic mã của tôi để làm mới chúng, nhưng dưới sự nhớ mui xe được cho đến khi bị ô nhiễm với các yếu tố cho đến khi tôi gọi yếu tố cụ thể hoặc getKeysWithExpiryCheck(), điều này không cho phép tôi sử dụng ehcache như trình quản lý bộ nhớ hiệu quả
Làm thế nào để biến phần tử thành GS sau timeToIdleThứ hai giây? Tôi muốn bộ nhớ được làm sạch nếu các phần tử không được sử dụng ở trên timeToIdleSeconds.
Michael