最新评论
Re:正确实现 IDisposable 接口 kooting 2012-01-11 12:55
不错,清楚!
Re:正确实现 IDisposable 接口 魔君七夜 2011-11-24 15:43
汗 怎么跟百度文库里面的一样啊 难道百度文库 是抄袭你这的 !
Re:正确实现 IDisposable 接口 和尚释然 2011-10-12 12:37
对资源的释放做了一个很好的剖析.谢谢楼主.
Re:正确实现 IDisposable 接口 Tear Y 2009-12-11 20:08
good
re: 调试用对象输出 斯克迪亚 2009-04-08 03:26
很帅的功能啊!
re: 正确实现 IDisposable 接口 jnywxxb 2008-04-10 13:50
dddddddddddddddddddddddddd
re: 查找CLR对象内存所属关系 GerryJiang 2007-11-22 17:36
好文!
re: 查找CLR对象内存所属关系 装配脑袋 2007-11-22 15:58
呵呵son of strike还是比较好玩的,大家继续……
re: 查找CLR对象内存所属关系 周银辉 2007-11-22 14:07
好文....
re: 查找CLR对象内存所属关系 Hasu 2007-11-22 13:53
load sos
已加载扩展 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll
!dumpheap –stat
PDB symbol for mscorwks.dll not loaded
执行命令期间出现错误: CXX0017: 错误: 没有找到符号“–stat”
我的更夸张,对象一直在刷..我等不下去就关闭了! 这个是我一个程序集里面测试的,估计加载的是整个程序集的!
re: 查找CLR对象内存所属关系 信110 2007-11-22 11:58
俺的!dumpheap -stat 也出来2000+个对象。为啥啊?
re: 查找CLR对象内存所属关系 Boler Guo 2007-11-22 11:27
好文,收藏并标记,回头研究一下。
re: 查找CLR对象内存所属关系 ColdDog 2007-11-22 10:41
为什么我输入 !dumpheap -stat 之后,得到以下信息:
PDB symbol for mscorwks.dll not loaded
total 2101 objects
Statistics:
MT Count TotalSize Class Name
790fcba0 1 12 System.Security.Permissions.SecurityPermission
00a7301c 1 12 test.TestClass
7910234c 1 24 System.Collections.ArrayList
790fc3f4 1 24 System.OperatingSystem
790fb5d8 1 24 System.Reflection.Assembly
790fa4a4 1 28 System.SharedStatics
790fbc64 1 32 Microsoft.Win32.Win32Native+OSVERSIONINFO
79122868 1 36 System.Int64[]
790fc284 1 40 Microsoft.Win32.Win32Native+OSVERSIONINFOEX
790fab38 1 40 System.AppDomainSetup
790fca80 1 44 System.Security.FrameSecurityDescriptor
790fc32c 2 48 System.Version
790f8a7c 4 48 System.Object
790fb144 3 60 System.RuntimeType
790f9664 3 60 System.Text.StringBuilder
790fb860 1 64 System.IO.UnmanagedMemoryStream
790fc664 2 72 System.Security.PermissionSet
790f9ad4 1 72 System.ExecutionEngineException
790f9a30 1 72 System.StackOverflowException
790f998c 1 72 System.OutOfMemoryException
790fa704 1 100 System.AppDomain
00189cf8 7 100 Free
00a730bc 10 120 test.StringHolder
790f9b78 2 144 System.Threading.ThreadAbortException
79122994 6 356 System.Char[]
7912254c 9 8992 System.Object[]
790f9244 2037 129828 System.String
Total 2101 objects
居然有2101个objects
re: .NET 环境下运行时代码生成和编译 Clark Zheng 2007-11-22 10:20
哈,运行时编译,在有些.NET开发的网游私服程序中利用其做角本工具
re: 查找CLR对象内存所属关系 Clark Zheng 2007-11-22 10:19
高深呀,PF!PF!
re: .NET 环境下运行时代码生成和编译 黑羽飘舞 2007-11-22 09:55
不错学习了,mark。其实两者各有利弊,关键还是看如何应用。
re: 查找CLR对象内存所属关系 txdlf 2007-11-22 09:50
@dali
我的比你还多,搂主什么环境呢,2003?我用的是2005 Pro
790fcb30 2044 130556 System.String
re: 查找CLR对象内存所属关系 辰 2007-11-22 09:44
请教一下,能否把这种debug用代码实现?
这样就可以开发一套很有趣的debug工具了。
re: 查找CLR对象内存所属关系 dali 2007-11-22 09:23
为什么我运行这个程序, 竟然是:
790f9244 2037 130060 System.String
re: 查找CLR对象内存所属关系 Kain 2007-11-22 09:14
不错
re: .NET 环境下运行时代码生成和编译 长空新雁 2007-11-22 09:02
楼主很厉害,这也能想到。
我是一个初学者,我想问一下用泛型字典行不行。
把 Type type = m_objectTypes(id) as Type;
return Activator.CreateInstance(type);
变为 return m_objectTypes[id];
re: .NET 环境下运行时代码生成和编译 lixiong 2007-11-22 02:01
慢到不是问题。跟数据库操作比,这个开销小很多数量级
最怕的是动态编译导致的内存分片,这个就很郁闷了。
CLR的CodeDom技术无法在生产环境中广泛应用的根源就在这里。这也是为何ASP.NET需要支持batchCompilation的原因
re: .NET 环境下运行时代码生成和编译 GSpring 2007-11-21 22:12
好办法
re: 查找CLR对象内存所属关系 大石头 2007-11-21 21:14
写得好,正需要这些东西
我来回答楼上各位的问题
1,ORM问题。在ORM中,数据库操作占了七成到九成的性能消耗,ORM映射的消耗与之相比并不大 ,所以,反射慢N倍,并不是很明显,如果你写代码来进行直接调用和反射调用进行对比,就可以发现很慢了,我的测试结果是几百倍。
2,说楼主的办法慢的问题。编译的确比反射慢,但是大家不会傻到每次调用都编译吧?编译一次,缓存起来,下次使用就可以了。同时这也是.Net的特点,初次运行慢。
3,私钥加密,公钥解密来保护的问题。不行的,因为内存里面的程序集可以倍Dump出来成为文件的。
@Ling Xu
你怎么样测试?偶很想知道一下反射的性能到底跟实际的操作差多远
学习学习

re: 查找CLR对象内存所属关系 Ling Xu 2007-11-21 20:57
@a feng
原创。如果抄来的不是自己找骂么?
re: .NET 环境下运行时代码生成和编译 Ling Xu 2007-11-21 20:56
@没剑
顺便说一下,这是实测结果,你也可以通过研究sscli的代码了解反射过程是怎么做的。
re: .NET 环境下运行时代码生成和编译 Ling Xu 2007-11-21 20:55
@yujiasw
对于我的实现确实只需要在程序开始运行的时候生成一次就可以了。不需要频繁生成。
re: .NET 环境下运行时代码生成和编译 Ling Xu 2007-11-21 20:54
@没剑
技术本身没有好坏,在于怎么去用。大量使用反射并不一定会慢,一般来说在程序开始的时候使用反射来进行初始化,在正式运行的时候还是使用常规的方式,这样不会影响性能。
但是我上面举的例子是每次生产新对象的时候就是用一次反射,假设该对象需要频繁创建的,那么这就会明显影响性能。
re: .NET 环境下运行时代码生成和编译 Ling Xu 2007-11-21 20:53
@fawfa
问题在于,对于需要频繁调用工厂生产对象的地方,如果使用反射方式,每次都需要用过Activator来创建对象,但是使用动态代码生成,就算再慢,它也只是一次性的操作,以后生产对象的时候就很快了
re: .NET 环境下运行时代码生成和编译 _yao 2007-11-21 19:47
把代码用私钥加密了,然后用公钥解开后编译,是不是能够有效的防注册破解?
谢谢 对Dispose Finalize和Close两个函数有了更进一步的认识
re: .NET 环境下运行时代码生成和编译 代码乱了 2007-11-21 18:19
运行时编译应该要慢很多,比起反射来说
re: 查找CLR对象内存所属关系 GSpring 2007-11-21 18:16
调试方法不错
re: .NET 环境下运行时代码生成和编译 rexzhou 2007-11-21 18:11
貌似这个比反射更慢吧
re: .NET 环境下运行时代码生成和编译 yujiasw 2007-11-21 18:06
运行时代码编译才是最慢的阿,曾经做过一个计算复杂数学表达式的工具,曾经想过使用动态编译代码来获取值,结果曼的不能忍受。
如果只生成一次,那没有什么问题,要是要频繁编译,很影响效率。
re: .NET 环境下运行时代码生成和编译 scotoma 2007-11-21 18:05
楼主真厉害..
呵呵......这样确实非常的灵活
re: 查找CLR对象内存所属关系 a feng 2007-11-21 17:58
请问一下
我在输入 .load sos的时候
上面提示
"
>.load sos
命令 ".load" 無法使用。
"
这是咋回事啊
看上去很漂亮的代码,问题是这段代码非常慢,比前一段代码慢一万倍以上
----
楼主说的是不是太夸张了点?
ORM里很多都是用了反射,这样子的话岂不是比正常的系统慢N*1万倍以上?
哪ORM还有什么可用之处?
re: .NET 环境下运行时代码生成和编译 fawfa 2007-11-21 17:46
这都不慢? 还有什么慢啊
re: 查找CLR对象内存所属关系 阿里 2007-11-21 17:45
如果是翻译,最好把原文链接上
哇塞~~
我还以为反射很拽了。
没想到还有更拽的。
动态生成编译,想都没想过。
re: 查找CLR对象内存所属关系 a feng 2007-11-21 17:32
你自己写的还是翻译过来的?
嘿嘿,学习一下。最近就是用IDispoable来释放资源,通过今天的测试,还不错。
不过还得继续理解一下,好象和楼主理解有一定的出入。
re: 正确实现 IDisposable 接口 reonlyrun 2007-03-20 22:02
好东西,先回复,再看!
这次,意见一致,呵呵,我本来一直讲的就是非托管资源
对于封装的非托管资源的释放问题会导致封装类在使用上必须仔细考虑。
我刚开了个blogs:还没有东西,有空来坐坐
www.cnblogs.com/hqfhy