如何获得托管堆中的某个对象实例所具有的所有指向它的引用的数量?

possible_Y 2008-06-12 10:11:01
在.net里,如何获得托管堆中的某个对象实例所具有的所有指向它的引用的数量?
...全文
121 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yilanwuyu123 2008-06-12
  • 打赏
  • 举报
回复
mark一下 有难度
Jade_2008 2008-06-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fengweizhijie 的回复:]
内存管理在进行垃圾回收的时候要遍历引用
找到没有引用关联的托管堆,释放之
如果能获得托管堆中的某个对象实例所具有的所有指向它的引用的数量
那就不用遍历了啊,所以还好像不行把
但是可以自己写个函数来记录一下,想必楼主只是想知道某个,或某几个对象把,也不麻烦
[/Quote]
顶!!
fengweizhijie 2008-06-12
  • 打赏
  • 举报
回复
内存管理在进行垃圾回收的时候要遍历引用
找到没有引用关联的托管堆,释放之
如果能获得托管堆中的某个对象实例所具有的所有指向它的引用的数量
那就不用遍历了啊,所以还好像不行把
但是可以自己写个函数来记录一下,想必楼主只是想知道某个,或某几个对象把,也不麻烦
江城老温 2008-06-12
  • 打赏
  • 举报
回复
这个在C#能取得吗?而且在c#标准类型里能指向同一段内存区域的类型就只有StringBuilder吧?
ojekleen 2008-06-12
  • 打赏
  • 举报
回复
mark
yagebu1983 2008-06-12
  • 打赏
  • 举报
回复
非常关注!!!
帮你顶!!
gomoku 2008-06-12
  • 打赏
  • 举报
回复
拿到"引用的数量"有什么特殊用途吗?

.Net的垃圾回收并不根据引用的数量来决定的,
而是根据是否存在从根部(Root)到对象的连通来决定的,所有能连通的对象都被标记为"有用的"。
当遍历到一个标记过的节点,垃圾回收机制就停止由该节点往下的搜索。这样可以避免循环引用的问题。

垃圾回收都不关心具体的引用数量,你应该也可以放弃这种需求。

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧