Castle Windsor:我的瞬态组件会被垃圾收集吗?

2024-01-12

使用温莎城堡,我有一个配置了瞬态生活方式的组件:

<component id="publish.mapping.default"
                   service="IMyService, MyAssembly"
                   type="MyServiceImplementation, Myassembly" 
                   lifestyle="transient" />

它将像这样使用:

var service = container.Resolve<IMyService>(componentId);
// service usage ....
// service goes out of scope ... 

我的问题是,服务实例超出范围后是否会被垃圾收集,或者 Castle Windsor 是否会保留引用?我发现这个类似的问题 https://stackoverflow.com/questions/132940/why-does-castle-windsor-hold-onto-transient-objects,这意味着后者可能是这种情况 - 但在检查了那里发布的链接后,我不确定讨论是关于保留引用,还是关于确保对象在实现 IDisposable 时被处置。我的物品不需要被处置。

如果温莎城堡保留该实例,是否有任何简单的方法可以防止这种情况(也许通过配置)?

EDIT
看来我需要设置发布跟踪策略。可以在xml配置文件中配置,还是需要在代码中设置?可以针对每个组件设置发布跟踪策略吗?


默认情况下,容器保存对对象(甚至是瞬态对象)的引用。

然而,正如 @Bittercoder 中指出的那样为什么温莎城堡会抓住瞬态物体? https://stackoverflow.com/questions/132940/why-does-castle-windsor-hold-onto-transient-objects, 你可以更改发布跟踪策略 https://github.com/castleproject/Windsor/blob/aa9b8b353ee2e533d586495eec254e216f800c09/docs/release-policy.md。看来选择

LifecycledComponentsReleasePolicy:

var policy = container.Kernel.ReleasePolicy;
container.Kernel.ReleasePolicy = LifecycledComponentsReleasePolicy;

但自从这个问题被提出以来,这似乎已经成为默认政策。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Castle Windsor:我的瞬态组件会被垃圾收集吗? 的相关文章

随机推荐

  • Babel 文件被复制而不进行转换

    我有这个代码 use strict import browserSync from browser sync import httpProxy from http proxy let proxy httpProxy createProxyS
  • 如何在Python中绘制悬挂根图?

    受此启发question https mathematica stackexchange com questions 120174 how to draw a hanging rootogram in mathematica 如何在 pyt
  • 如果下限大于上限,则创建空序列的序列构造

    不止一次体现R的 聪明 seq函数在极端情况下对我造成了严重的打击lower upper 1 gt 1 0 1 1 0 gt seq 1 0 1 1 0 gt seq 1 0 1 Error in seq default 1 0 1 wro
  • RethinkDB 如何生成自动 ID?

    我正在编写一个脚本 该脚本应该合并来自基于 SQL 的数据库的一些数据 每行都有一个长整数作为主键 增量 我正在考虑对这些 id 进行哈希处理 以便它们在某种程度上 看起来 像我的 RethinkDB 表中已有的其他 id 我在这里试图实现
  • 6 位整数的正则表达式不能是连续或重复的数字?

    我正在尝试获取一个正则表达式来检查以确保提供的 int 是 6 位数字 并且它不是连续的 也不包含所有重复数字 无论是升序还是降序 我并不关心正则表达式是否返回与不允许的数字的匹配 或者返回与允许的原始数字的匹配 例如 所有这些数字都是我需
  • Android 自动圆形图库

    我的图库小部件包含 1 10 张要滑动的图像 我知道当我在屏幕上进行条纹时 图像从左向右滚动 我想要自动循环图库在 10 后自动从第一张图像开始 有没有自动循环适配器或方法 final Gallery g Gallery findViewB
  • Scala XML 支持如何工作?

    我确信这应该是显而易见的 但我可以找到有关我的问题的任何参考资料 Scala XML 使用什么底层技术 它是类似 DOM 或 SAX 或 StAX 的东西吗 处理大型文档时我应该注意哪些性能损失 StAX 是否更高效 提前致谢 可以处理大文
  • CSS 变量名中允许使用句点吗?

    例如 我可以有一个名为如下的 css 变量 Button onHover 请注意 CSS 变量与 CSS 选择器不同 我必须解释这一点 因为有人将其标记为重复项 这是模块中的示例superfly css 变量 颜色 https github
  • 如何抛出不会终止我的程序的 IllegalArgumentException?

    好吧 我有一个带有 switch 语句的方法 但我省略了其余的情况 因为它们并不重要 在我的主要方法中 调用运算符方法并在 while 循环中传递参数 选择 直到他们选择 Q 当用户输入负数时 它应该抛出异常 打印一条消息 并忽略他们的输入
  • 在流畅的界面中实现条件

    我一直在尝试为我的系统中的一组规则实现一个流畅的界面 我想要完成的是这个 TicketRules RequireValidation When quartType gt quartType QuartType Before TotalMil
  • PHP奇怪的DOCUMENT_ROOT

    基本上 我正在编写一个框架 作为其功能的一部分 它应该为最终开发人员提供一组完善的 URI 路径 其中两条路径利用 SERVER DOCUMENT ROOT Absolute filesystem path to web root inst
  • 如何从 Jersey 的 ContainerRequest 中提取请求属性?

    HttpServletRequest有一个方法setAttribute String Object 我怎样才能从中提取这个属性ContainterRequest 我没有找到 getAttribute method Code public c
  • 创建 WooCommerce 自定义 API

    由于开箱即用的 WooCommerce REST API 中缺乏许多功能 我正在考虑创建一个 WooCommerce 端点 例如 付款 产品插件等 但我找不到任何可以开始的东西 也没有关于如何扩展 WooCommerce 以创建新端点的文档
  • 在调用 RunWorkerAsync 之后但在函数退出之前取消订阅 DoWork 是否安全?

    我有很多方法 虽然它们一次只运行一种 但它们都使用相同的RunWorkerCompleated and ProgressChanged方法 但它们都有不同的Dowork方法 执行以下操作是否安全 private void button Pr
  • 读取嵌入换行符的 CSV 文件

    我正在处理从网站上抓取的文件 该文件保存为带有引号字段的分号 csv 最后一个字段包含嵌入的换行符 我一直在编写一个脚本来处理该文件 我对 Perl 相当陌生 起初是用普通的 Perl 脚本尝试它 但很快发现它不起作用 我做了研究 发现我应
  • Android:以编程方式更改选项卡文本颜色

    我有一个像这样的 TabHost
  • 用keras网格搜索隐藏层数

    我正在尝试使用 Keras 和 sklearn 优化我的神经网络的超参数 我正在结束 KerasClassifier 这是一个分类问题 我正在尝试优化隐藏层的数量 我不知道如何使用 keras 做到这一点 实际上我想知道如何设置函数 cre
  • 升级到 VS2017 后 VSTS 托管构建失败

    我已将最初在 VS2015 中创建的 asp net core 项目 project json 升级为 VS2017 MSBuild 项目格式 csproj 构建定义如下所示 Restore Build and Test构建步骤最终会出现以
  • 在训练 CNN 进行文本分类时如何微调 word2vec?

    我有 3 个关于微调词向量的问题 请帮帮我 我会非常感激的 提前谢谢了 当我训练自己的 CNN 进行文本分类时 我使用 Word2vec 来初始化单词 然后我只是使用这些预先训练的向量作为我的输入特征来训练 CNN 所以如果我从来没有嵌入层
  • Castle Windsor:我的瞬态组件会被垃圾收集吗?

    使用温莎城堡 我有一个配置了瞬态生活方式的组件