HTML5技术

在内存中观察CLR托管内存及GC行为 - lulianqi15(2)

字号+ 作者:H5之家 来源:H5之家 2017-02-27 18:00 我要评论( )

现在我们通过a1的位置,查找内存中含有其地址的内存,居然搜索到了5块内存,而且都靠的非常近 同样的方法搜索到bytesStart在内存里的地址 同样的结构类型指针,同步索引,后面跟8字节的长度,再后面就是数据 根据地

 

现在我们通过a1的位置,查找内存中含有其地址的内存,居然搜索到了5块内存,而且都靠的非常近

 

 

 

 

同样的方法搜索到bytesStart在内存里的地址

同样的结构类型指针,同步索引,后面跟8字节的长度,再后面就是数据

 

 

根据地址搜索bytesStart在内存里的指针,也只有1个(这种结果在同样环境下运行每次的表现都是已有的,不过在更换运行环境后就会有明显差异),而且也紧靠着a1的指针(可以推断他们确实是在一张“表”上)

 

 

现在看下刚刚找到的NextObjPrt里面的数据是多少(02486988),下面我们看下这个地址里是什么

 

 

可以看到就指向了最后分配的bytesStart地址的后面

每个引用对象后面都有8个全0的字节(多次测试,反复分析数据都是这样)

 

监测点3 (为了验证刚刚的NextObjPrt的确是那块内存)

 

到第3步,可以直观的看到bytesThen就直接使用了刚刚NextObjPrt后面指向的内存,

 

 

 

同时也看到NextObjPrt指示下的一片内存(这个时候对A0 6D 48 02 的搜索也证明内存里只有这么一块存的是这个数据)

而且可以看到这个地址确实就是bytesThen后面的内存地址

 

第4监测点 (重复创建10分份的typeA)

 

 

这次直接使用类型对象指针搜索新创建的10份TypeA (可能会搜索出其他数据,因为内存里有其他程序及测试前几次运行残留的数据)

可以看到这些TypeA直接分配在了bytesThen的后面(测试中尽量少使用终端打印。终端打印虽然1行代码,不过clr会创建很多对象去完成打印,不方便观察)

 

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 一个由进程内存布局异常引起的问题 - twoon

    一个由进程内存布局异常引起的问题 - twoon

    2017-02-08 17:00

  • SQL Server 2014内存优化表的使用场景 - 桦仔

    SQL Server 2014内存优化表的使用场景 - 桦仔

    2017-01-25 14:02

  • 微信小程序开闸,关于入口、推广、场景的一些观察与思考 - 腾讯攻城师lee

    微信小程序开闸,关于入口、推广、场景的一些观察与思考 - 腾讯攻城

    2017-01-10 13:00

  • In-Memory:内存数据库 - 悦光阴

    In-Memory:内存数据库 - 悦光阴

    2017-01-08 11:00

网友点评
-