惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
D
DataBreaches.Net
F
Full Disclosure
腾讯CDC
博客园 - 【当耐特】
MyScale Blog
MyScale Blog
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
The Register - Security
The Register - Security
WordPress大学
WordPress大学
博客园 - 聂微东
雷峰网
雷峰网
J
Java Code Geeks
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Privacy International News Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
A
Arctic Wolf
Scott Helme
Scott Helme
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tor Project blog
博客园 - 三生石上(FineUI控件)
Know Your Adversary
Know Your Adversary
AWS News Blog
AWS News Blog
G
Google Developers Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CERT Recently Published Vulnerability Notes
O
OpenAI News
Project Zero
Project Zero
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Application and Cybersecurity Blog
Application and Cybersecurity Blog
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
P
Palo Alto Networks Blog
Schneier on Security
Schneier on Security

博客园 - kings

项目团队成长日志--聆听客户声音,沟通无所不在 TOAD使用筆記 使电脑鼠标右键相应快的办法 非常好用的对日面试资料(转) IT技術者日本語面接(ぎじゅつしゃにほんごめんせつ)によく出(で)る100質問(しつもん) 获取应用程序路径 再议 构造方法(转自Q.yuhen) C# 2.0 - 泛型(Generics)(转自Q.yuhen) new 和 override 的区别(转自Q.yuhen) “多态”一个需要注意的问题(转自Q.yuhen) C# 方法参数 ref 详述(转自Q.yuhen) 浅析Family Show 2.0的动态换肤实现(转tonyqus) 浅析Family Show 2.0的子窗体实现(转tonyqus) webservice 遇到的小问题 泛型集合类型,赋予集合业务意义,增强集合的抽象使用(转-lizhe1985) WPF_Markup的几种写法 When I tab into a toolbar in WPF I can't tab out again? What can I do to change this tab behaviour? Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定之二:使用外部URL的XML文件)(转-大可山) Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)(转-大可山)
基元类型、值类型和引用类型(转自Q.yuhen)
kings · 2007-09-23 · via 博客园 - kings

基元类型(primitive type)
----------------------------------
编译器直接支持的类型。

sbyte / byte / short / ushort / int / uint / long / ulong / char / float / double / bool / decimal / object / string

值类型(value type)
------------------------------
值类型实例分配在堆栈(stack)上,值类型变量本身即包含实例所有字段,值类型不受垃圾回收器控制,在离开作用域后自动释放所占内存。所有值类型都继承自ValueType。值类型缺省状态下(未装箱)按值复制方式传递。

sbyte / byte / short / ushort / int / uint / long / ulong / char / float / double / bool / decimal / 枚举(enum) / 结构(struct)

引用类型(reference type)
------------------------------------
引用类型都全部或间接继承自Object,引用对象内存必须在托管堆(heap)中分配,引用类型变量包含对象在托管堆中的内存地址。每个引用类型对象实例都包含一些额外附加成员,且需要垃圾回收器回收才能释放内存。注意,引用本身在堆栈中分配。引用类型对象传递时只是复制引用(内存地址)。

引用对象(Object) / 数组(String) / 数组(Array) / 装箱后的值类型

装箱步骤
-------------
1. 从托管堆分配内存,包括添加方法表指针和SyncBlockIndex。
2. 将值类型字段拷贝到该内存。
3. 返回该地址的引用。

拆箱步骤
------------
1. 如果引用为null,抛出NullReferenceException。
2. 如果目标不是已装箱的值类型,抛出InvalidCastException。
3. 返回指向包含在已装箱对象中值类型部分的引用,而不是重新在堆栈建立值类型实例,因此需要GC回收才能释放。

栈(stack)
------------
位于常规内存区(general random-access memory),处理器可以通过栈指针(stack pointer)对它进行直接访问。指针向下移动创建新的存储空间,向上释放存储空间。是仅次于寄存器(registers)的最快、最有效率的分配内存方法。一般用来存储那些已知大小的值类型和引用,栈中分配的数据在超出作用域后自动被释放。

堆(heap)
------------
这是一段多用途内存池(general-purpose pool of memory)。堆的优点是分配内存时编译器无需知道该分配多少空间,以及数据的生存期。在堆中分配的对象必须通过垃圾回收期回收后才能释放,因此效率要比栈低一些。