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

推荐订阅源

V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
V
V2EX
B
Blog RSS Feed
有赞技术团队
有赞技术团队
博客园 - Franky
美团技术团队
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
云风的 BLOG
云风的 BLOG
L
LangChain Blog
GbyAI
GbyAI
The Cloudflare Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Stack Overflow Blog
Stack Overflow Blog
博客园 - 【当耐特】
The Register - Security
The Register - Security
大猫的无限游戏
大猫的无限游戏
D
Docker
Vercel News
Vercel News
Blog — PlanetScale
Blog — PlanetScale
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
人人都是产品经理
人人都是产品经理
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
N
Netflix TechBlog - Medium
博客园_首页
A
About on SuperTechFans
J
Java Code Geeks
量子位
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
Recent Announcements
Recent Announcements
G
Google Developers Blog
小众软件
小众软件
博客园 - 叶小钗
WordPress大学
WordPress大学
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
F
Full Disclosure
Jina AI
Jina AI
H
Help Net Security

博客园 - Niyo Wong

用于主题检测的临时日志(f89708b9-f679-4391-af74-c92d9138aed4 - 3bfe001a-32de-4114-a6b4-4005b770f6d7) 测试用Word 2007发布博客 【转】ASP.NET Page事件的执行顺序 ASP.NET页面请求过程 JSP 执行过程 SQL Server 2005 错误处理笔记 UML入门 与健康有约——送给每一个关心自己身体的人 .net 如何设置和检索特性信息(attribute) VC++(MFC)数据库程序——入门 T-SQL编程基础-游标 .net中的4种事务总结 T-SQL编程基础-基本语法 Javascript调用服务器端事件 模式窗口页面不更新的问题 ASP.NET菜鸟进阶-Response.Write与RegisterXXX ASP.NET菜鸟进阶-页面间参数传递 差点把这好地儿给荒废了 我们的生活离不开笑
.Net内存分配笔记
Niyo Wong · 2008-05-04 · via 博客园 - Niyo Wong

  CLR管理的内存主要有三块, 也就是我们对象实例分配在这三块内存区域:
1.     线程的堆栈: 用于分配值类型实例, 又操作系统管理, 不受垃圾收集器的控制, 但之类型实例所在的方法结束, 其存储单元自动释放. 栈的执行效率高, 但容量有限.
2.     GC: 用于分配小于85000字节的引用类型小对象实例. 但有内存分配或垃圾回收时, 垃圾收集器可能会对GC堆压缩
3.     LOH: 用于分配不小于85000字节的引用类型大对象实例, LOH堆不会被压缩, 只有在GC堆全部被回收后, LOH堆才会被回收.
我们常说的托管堆就是指GC堆和LOH 

.Net中有两大类数据类型, 即值类型和引用类型
1.     值类型(如 charintfloat)、枚举类型和结构类型。
上文说到值类型是分配在线程的堆栈中, 但并非所有的值类型都分配在堆栈上. 如: 类是引用类型, 其有一个成员字段是值类型, 则该字段作为引用类型实例的一个成员也和类一样, 被创建在托管堆上. 还如: 在装箱的时候, 值类型也会被copy到托管堆上.
2.     引用类型包括类 (Class) 类型、接口类型、委托类型和数组类型。
引用类型存贮在动态的堆中, 堆是由应用程序控制的可随时申请和释放该空间,在.Net中一般情况下有垃圾收集器处理.如果引用类型嵌套在值类型里的话, 值类型在线程的堆栈上, 而引用类型在GC堆上, 只是对引用类型的引用在线程的堆栈上.

值类型与引用类型的区别在于值类型的变量直接包含其数据
而引用类型的变量则存储对象引用。对于引用类型,两个变量可能引用同一个对象,因此对一个变量的操作可能影响另一个变量所引用的对象。对于值类型,每个变量都有自己的数据副本,对一个变量的操作不可能影响另一个变量。

引用类型实例:
StringBuilder s1 = new StringBuilder();//StringBuilder的一个首地址传给s1
StringBuilder s2 = s1;//S1中的首地址传给s2

s2.Append("abc");
Console.WriteLine(s1);
s1 = null;
Console.WriteLine(s2);输出结果:
abc
abc
说明: "s1 = null"只是将s1的引用置为空, 但此时StringBuilder的堆空间并没有被释放,
因此在此之后,输出s2时,仍然可以输出abc.