首页 > 其他 > 详细

第十六节:大对象

时间:2015-04-30 00:46:41      阅读:125      评论:0      收藏:0      [点我收藏+]

还有另外一个性能提升举措值得注意。任何85000字节或更大的对象都被自动视为大对象。大对象从一个特殊的大对象堆中分配。这个堆中的对象采用和前面讨论过的小对象一样的方式终结和释放。但是,大对象永不压缩,因为在堆中下移85000字节内存块是浪费太多的CUP时间。但是,在写代码时,永远都不要假设大对象是不移动的,因为大对象的起始大小将来可能就不再是85000字节了。要百分之百保证对象在内存中不移动。

大对象总是被认为是第2代的一部分,所以只能为需要长时间存活的资源创建大对象。如果分配短时间存活的大对象,将导致第2代被更频繁的回收,这会损害性能。以下程序证明大对象总是在第2代中分配的:

Object OBJ = new Byte[85000];

Console.WriteLine(GC.GetGeneration(OBJ));

所有这些机制对于我们应用程序来说都是透明的。在开发人员面前,好像只有一个托管堆;这些机制的唯一目的就是提升应用程序性能。

 

第十六节:大对象

原文:http://www.cnblogs.com/bingbinggui/p/4467730.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!