kra*_*bit 7 concurrency d immutability
考虑一个具有以下内容的工作循环:
...
auto msg = new immutable(DataWrittenMsg)(bytesWritten);
masterTid.send(msg);
...
Run Code Online (Sandbox Code Playgroud)
当时间到达Inf时,这会慢慢但肯定会占用所有内存吗?或者GC可以收集未使用的不可变数据?
(我正在阅读TDPL第13章,一旦设置了不可变数据,我就会得到印象,它永远不会被取消?)
Vla*_*eev 10
不,GC仍会拾取未引用的对象,无论它们的常量如何.
关于"一旦设置了不可变数据,它永远不会被取消" - 这只是在逻辑意义上.假设您的程序的内存安全性没有受到损害,程序可以访问的所有不可变堆分配对象只要它们可以访问就不会改变,即使这些对象变得无法访问时该地址的实际内存可以重用.