Concurrency “不可变数据”吗;“烧毁”;内存在D中?

Concurrency “不可变数据”吗;“烧毁”;内存在D中?,concurrency,d,immutability,Concurrency,D,Immutability,考虑一个工作循环,它有如下内容: ... auto msg = new immutable(DataWrittenMsg)(bytesWritten); masterTid.send(msg); ... 随着时间的推移,这会慢慢但肯定地吃掉所有的公羊吗?或者GC是否可以收集未使用的不可变数据 (我正在阅读,我得到的印象是,一旦设置了不可变数据,它就永远不会被取消设置了?不,GC仍然会拾取未引用的对象,而不管它们的常量如何 关于“一旦设置了不可变的数据,它就永远不会被取消设置”,这只是在逻辑意义

考虑一个工作循环,它有如下内容:

...
auto msg = new immutable(DataWrittenMsg)(bytesWritten);
masterTid.send(msg);
...
随着时间的推移,这会慢慢但肯定地吃掉所有的公羊吗?或者GC是否可以收集未使用的不可变数据


(我正在阅读,我得到的印象是,一旦设置了不可变数据,它就永远不会被取消设置了?

不,GC仍然会拾取未引用的对象,而不管它们的常量如何

关于“一旦设置了不可变的数据,它就永远不会被取消设置”,这只是在逻辑意义上。假设您的程序的内存安全没有受到损害,那么只要可以访问,您的程序可以访问的所有不可变堆分配对象都不会更改,即使这些对象无法访问时,该地址的实际内存可以重用