弱引用错误?

2023-11-25

[TestMethod]
public void Memory()
{
    var wr = new WeakReference("aaabbb");
    Assert.IsTrue(wr.IsAlive);
    GC.Collect();
    GC.Collect();
    GC.Collect();
    GC.Collect();
    GC.Collect();
    Assert.IsFalse(wr.IsAlive); //<-- fails here
}

这是.NET 3.5 SP1
谁能告诉我为什么这个测试失败?

Edit: 谢谢斯图史密斯

你有一个字符串的引用, 因为它是一个常数,所以是 可能实习(即不是动态的 分配),并且永远不会被分配 集。

就是这样。将第一行更改为

var wr = new WeakReference(new object());

并且测试通过了:-)


我可以立即想到两个可能的原因:

  1. 您正在调试中运行。调试中的引用比发布中的引用持续时间更长,并且可能比您想象的还要长。
  2. 您有一个对字符串的引用,由于它是一个常量,因此可能会被保留(即不是动态分配的),并且永远不会被收集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

弱引用错误? 的相关文章

随机推荐

  • 在 iPhone 应用程序中将单个像素直接绘制到屏幕上的最快方法是什么?

    我正在寻找在 iPhone 应用程序中将数千个单独计算的像素直接绘制到屏幕上的最快方法 该应用程序的性能非常好 最有可能使用 OpenGL 例如 glBegin GL POINTS glColor3f glVertex3f glEnd 甚至
  • Mac 上的 cronjobs 入门

    我正在尝试熟悉 cron 作业 我想我已经了解了基本的想法 调度 语法等 但是 我似乎无法在我的 mac 上使用终端来正确地完成它 我到底在哪里可以找到定时任务 我应该如何引用脚本的路径 我想做的是在远程机器上点击 php 脚本 http
  • CSS 中不断扩展的中间体

    我将如何设计一个具有固定高度的页眉和页脚 附加到浏览器窗口的顶部和底部 但中间可扩展的网站 滚动条仅适用于中间 图中的橙色部分 因此页面的其余部分永远不需要滚动 为了更清楚地解释 我在下面画了一个模型 理想情况下 它需要完全用 CSS 和
  • 如何在 SSRS 报告中创建动态列

    I need to create a SSRS report like 我有 3 列的表格开发者名称 工作时间 日期 如何创建报告以及获取数据的 sql 查询是什么 我不要求完整的 SQL 查询 我只需要一些提示 您可以使用 Matrix
  • Python 重新“伪造转义错误”

    我一直在摆弄 python re 模块 search方法 cur是来自 Tkinter 条目小部件的输入 每当我在条目小部件中输入 时 它都会引发此错误 我不太确定错误是什么或如何处理它 任何见解将不胜感激 cur是一个字符串 tup 0
  • SevenZipSharp - 压缩内存流

    我正在使用 SevenZipSharp 将文件压缩为 zip 文件 有没有办法使用它从内存流创建 zip 也就是说 之前将文件加载到内存流中 谢谢 玛雅 我正在使用 SevenZipSharp 来处理流 没有任何问题 SevenZip Se
  • 这个标志到底意味着什么? |=

    我很想了解这个运营商 我在 Java 中设置标志时见过这种表示法 例如 notification flags Notification FLAG AUTO CANCEL 它是否执行某种位操作 这个标记到底有什么作用 还有其他类似的众所周知的
  • 如何在android中打开特定的短信

    有没有办法用特定的短信在android上打开消息传递活动 threadId应该是您要查看的 SMS MMS 线程的 id Intent defineIntent new Intent Intent ACTION VIEW defineInt
  • 是否可以输入多种类型的提示?

    我可以使用类型提示允许两种不同的类型吗 例如 范围 requester可以是以下任一者User or File function log User File requester 从 PHP 8 0 开始 这将是可能的包含联合类型 The 该
  • Subversion:合并时“目标路径不存在”是什么意思?

    使用 subversion 1 5 我有分支 B 它是从分支 A 分支出来的 在两个分支中完成工作后 我将更改从 A 合并到 B 中 使用svn merge http path to A在B 的工作目录中并得到svn Target path
  • 为什么在结构体的构造函数中设置属性不起作用?

    我有以下不允许的代码 下面的错误 为什么 struct A private int b public A int x B x public int B get return b set b value 我收到以下错误 在分配 this 对象
  • 如何让 Matlab 读取正确数量的 xml 节点

    我正在使用 matlab 的 xmlread 内部函数读取一个简单的 xml 文件
  • MapView.onMapReady 从未在 Fragment 中调用以在 MapView 中加载 Google 地图

    我将尝试在 Android 应用程序中的名为的片段上显示地图RoeteFragment 如果我调试我的代码 我会看到该方法onMapReady永远不会被调用 因此地图不会加载 该片段实现了OnMapReadyCallback喜欢需要并且在o
  • JavaScript ecma6 将普通函数更改为箭头函数

    我有那个代码 function defineProperty object name callback if object prototype Object defineProperty object prototype name get
  • 在 UITableView 底部添加活动指示器? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 I have UITableview像第一个这样的分页将从服务器获取 20 个对象并填充UITableView然后 当它到达最后一行时 需要进行另一个服务调用来获取接下来的 20 个对象
  • 在 TestNG/Selenium 中自动重启失败的测试用例

    我正在使用 Selenium webdriver 在 Java 中与 TestNG 一起运行 X 数量的测试用例 我希望任何测试用例一旦失败就自动重新启动 无论是从开始还是从故障点 我知道TestNG框架有以下方法 Override pub
  • 对网络响应进行单元测试。在调试时有效,而不是在实际运行时有效

    我目前正在尝试测试是否确实收到了网络响应 虽然我知道这不是我应该做的测试 但这是我自己的好奇心 如果可能的话我想继续下去 就目前情况而言 我已经成功创建了测试 请求会毫无问题地发送到齐射队列 现在奇怪的部分 该请求永远不会被执行 这是我如何
  • 如何禁止简单策略展开算术表达式?

    The simpl策略展开诸如2 a 匹配树 这看起来一点也不简单 例如 Goal forall i Z fun x gt x i 3 i 3 simpl 导致 forall i Z match i with 0 gt 3 Z pos y
  • DateFormatter 不返回“HH:mm:ss”的日期

    这是代码摘录 func mapping map Map time lt map time TransformOf
  • 弱引用错误?

    TestMethod public void Memory var wr new WeakReference aaabbb Assert IsTrue wr IsAlive GC Collect GC Collect GC Collect