博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年10月26日

摘要: 揭示同步块索引(中):如何获得对象的HashCode题外话:为了尝鲜,也兴冲冲的安装了Win7,不过兴奋之余却郁闷不已,由于是用Live Writer写博客,写了好几篇草稿,都完成了80%左右,没有备份全部没了。欲哭无泪,只好重写了。Visual Studio + SOS 小实验咋一看标题,觉得有些奇怪,同步块索引和HashCode有啥关系呢。从名字上来看离着十万八千里。在不知道细节之前,我也是这样想的,知道细节之后,才发现这两兄弟如此亲密。我们还是先来用Visual Studio + SOS,看一个东西,下面是作为小白兔的示例代码: 1: using System; 2: publi... 阅读全文

posted @ 2011-10-26 11:10 qianyz 阅读(255) 评论(0) 推荐(0) 编辑

摘要: 揭示同步块索引(上):从lock开始大家都知道引用类型对象除实例字段的开销外,还有两个字段的开销:类型指针和同步块索引(SyncBlockIndex)。同步块索引这个东西比起它的兄弟类型指针更少受人关注,显得有点冷落,其实此兄功力非凡,在CLR里可谓叱咤风云,很多功能都要借助它来实现。 接下来我会用三篇来介绍同步块索引在.NET中的所作所为。 既然本章副标题是从lock开始,那我就举几个lock的示例:代码1 1: public class Singleton 2: { 3: private static object lockHelper = new object(); ... 阅读全文

posted @ 2011-10-26 11:09 qianyz 阅读(469) 评论(2) 推荐(1) 编辑

摘要: 揭示同步块索引(下):总结同步块的三个作用1 GC启动时候用来进行垃圾回收算法的时候会用到同步块的一个位,作为标志2 hashcode3 lock前面,我用两篇文章详细的讨论了同步块索引在lock和GetHashCode所起的作用。不过两篇文章是分开来讨论的。那可能有人会问,如果我有一个object,它既作为lock的lockHelper对象,也要调用它的GetHashCode方法该怎么办,难道这个同步块索引还可以承担这两个任务么。同步块索引是可以承担这两个任务,但是里面却隐藏着更大的秘密,我们先来看看与同步块索引相关的结构: 大致就是这样的一个结构,一个对象的ObjectHeader中的Sy 阅读全文

posted @ 2011-10-26 11:08 qianyz 阅读(200) 评论(0) 推荐(0) 编辑