2012-01-25 15 views
7

gibi bir şey olan bir işçi döngü düşünün: Zaman Inf ulaşır ulaşmazD değişmez veri "yanmak" RAM D?

... 
auto msg = new immutable(DataWrittenMsg)(bytesWritten); 
masterTid.send(msg); 
... 

bu yavaş ama emin adımlarla, tüm RAM yiyip olacak mı? Ya da kullanılmayan değişmez veriler GC tarafından toplanabilir mi?

(I TDPL Ch. 13 okuyorum ve izlenim kez iletmenin veri o tanımsız olsun asla ayarlanır olsun?)

cevap

10

Hayır, GC hala bakılmaksızın constness arasında başvurulmayan nesneleri toplayacak.

"Bir kez değiştirilemeyen veriler ayarlandığında, hiçbir zaman ayarlanamaz" ile ilgili olarak - bu sadece mantıksal anlamdadır. Programınızın bellek güvenliğinden ödün verilmediğini varsayarak, programınızın erişebileceği tüm değişmez yığın-ayrılmış nesneler, bu nesneler erişilemez hale geldiğinde, bu adresteki gerçek bellek yeniden kullanılabilir olsa bile, erişilemediği sürece değişmeyecektir.