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

11 2012 档案

摘要:深入理解值类型:值类型的内存布局更简单,但是它引入一些限制和装箱,装箱是一个代价高昂的过程。用值类型的主要原因是其内存密度高而且开销少。下面还是以简单的Point2D来讨论:public struct Point2D{public int X;public int Y;}Point2D实例以X=5, Y=7初始化的内存布局就像下图一样,没有额外的开销:少数罕见的情况下,需要自定义值类型的内存布局,一个例子是为了达到互操作的目的,当值类型的实例原样传到非托管代码时。可以通过两个属性来做这种自定义,StructLayout 和 FieldOffset。StructLayout可以用来指定对象的字段 阅读全文

posted @ 2012-11-29 17:23 淡如水wp 阅读(725) 评论(0) 推荐(0) 编辑

摘要:一、引子 假如有一个Point2D类表达一个二维空间--点,每个坐标都是一个short类型,整个对象有4个字节。如果存储100万个点,会用多少字节的空间?答案是取决于Point2D是值类型还是引用类型,如果是引用类型,100万个点将会存储100万个引用,这些引用在32位操作系统上就是40M左右,但这些对象本身还要占最少同样的空间,事实上,每个Point2D将会占12个字节的空间,这样算下来总的内存数在160M。但如果是值类型,没有一个多余字节的浪费,就是整整40M,只有引用类型时的1/4,不同就在于值类型的内存密度。 存储成引用类型还有一个缺点是如果想在这个巨型的堆对象引用数组(非连续存储.. 阅读全文

posted @ 2012-11-27 23:30 淡如水wp 阅读(1738) 评论(2) 推荐(0) 编辑

摘要:一、性能衡量要素CPU使用率(百分比)物理/虚拟内存使用量(KB,MB,GB)缓存命中率(次数,率/每秒)页面错误率(次数,率/每秒)数据库存储时间(率/每秒)内存分配(字节数,对象数,率/每秒)执行时间(字节数,对象数,率/每秒)网络操作量(次数,率/每秒)硬盘操作量(次数,率/每秒)响应时间(毫秒)垃圾回收(次数,率/每秒,花费的时间)异常(次数,率/每秒)启动时间(毫秒)并发冲突 (次数,率/每秒)二、不同场景下的看重因素 客户端程序:启动时间,内存使用量,CPU使用率。 服务端程序:CPU使用率,缓存命中率,并发冲突,内存分配,垃圾回收。 WEB应用:内存使用量,数据库存储时间,... 阅读全文

posted @ 2012-11-27 17:30 淡如水wp 阅读(704) 评论(2) 推荐(0) 编辑

点击右上角即可分享
微信分享提示