c#每日小结 <九>
2011-07-26 21:03
134 查看
.NET Framework[/b]垃圾回收器管理应用程序内存的分配与释放,[/b][/b]
分配[/b][/b]
每次使用[/b]new[/b]运算符创建对象的时候,运行库都从托管堆为该对象分配内存,内存的分配包括字段所需空间[/b]+[/b]对象所需空间[/b](也包括两部分,同步块索引和类型对象指针);[/b][/b]
垃圾回收:[/b][/b]
代[/b]是[/b]CLR[/b]垃圾收集器的一种机制,存在目的:提高应用程序的性能。它的执行过程大体如下:[/b][/b]
第一次初始化:[/b][/b]
[/b]
[/b]
第[/b] 0 [/b]代[/b][/b]
一轮处理[/b]:当[/b]0[/b]代中存满时,此时若又要添加新对象,垃圾收集器就会遍历线程堆栈,找出没有地址空间引用的托管堆内存空间,将其释放,[/b][/b]
然[/b] [/b]然后将剩余的[/b]0[/b]代对象放入[/b]1[/b]代中,将新对象放入[/b]0[/b]代中;[/b][/b]
[/b]
[/b]
第[/b] 1 [/b]代[/b] [/b]第[/b] 0 [/b]代[/b][/b]
二轮处理:[/b]当又要添加新对象时,就会将其添加到[/b]0[/b]代对象中,当[/b]0[/b]代对象存满时,就会重复一轮处理过程;当[/b]1[/b]代中也存满时,此时若又要添加新对象,垃圾收集器就会遍历线程堆栈,找出没有地址空间引用的[/b]1[/b]代和[/b]0[/b]代中的托管堆内存空间,将其释放,然[/b] [/b]然后将剩余的[/b]0[/b]代对象放入[/b]1[/b]代中,将新对象放入[/b]0[/b]代中;[/b][/b]
[/b]
第 1 [/b]代[/b] [/b]第[/b] 0 [/b]代[/b][/b]
然后将剩余的[/b]1[/b]代对象放入[/b]2[/b]代中,将剩余的[/b]0[/b]代对象放入[/b]1[/b]代中,将新对象放入[/b]0[/b]代中;[/b][/b]
[/b]
第[/b] 2 [/b]代[/b] [/b]第[/b]1[/b]代[/b] [/b]第[/b]0[/b]代[/b][/b]
第0代对象预算对象容量为256k,第1代对象预算对象容量为2M;第2代对象预算对象容量为10M;
分配[/b][/b]
每次使用[/b]new[/b]运算符创建对象的时候,运行库都从托管堆为该对象分配内存,内存的分配包括字段所需空间[/b]+[/b]对象所需空间[/b](也包括两部分,同步块索引和类型对象指针);[/b][/b]
垃圾回收:[/b][/b]
代[/b]是[/b]CLR[/b]垃圾收集器的一种机制,存在目的:提高应用程序的性能。它的执行过程大体如下:[/b][/b]
第一次初始化:[/b][/b]
A[/b] | B[/b] | C[/b] | D[/b] | E[/b] |
[/b]
第[/b] 0 [/b]代[/b][/b]
一轮处理[/b]:当[/b]0[/b]代中存满时,此时若又要添加新对象,垃圾收集器就会遍历线程堆栈,找出没有地址空间引用的托管堆内存空间,将其释放,[/b][/b]
A[/b] | B[/b] | C[/b] | D[/b] | E[/b] |
[/b]
A[/b] | B[/b] | D[/b] | F[/b] |
第[/b] 1 [/b]代[/b] [/b]第[/b] 0 [/b]代[/b][/b]
二轮处理:[/b]当又要添加新对象时,就会将其添加到[/b]0[/b]代对象中,当[/b]0[/b]代对象存满时,就会重复一轮处理过程;当[/b]1[/b]代中也存满时,此时若又要添加新对象,垃圾收集器就会遍历线程堆栈,找出没有地址空间引用的[/b]1[/b]代和[/b]0[/b]代中的托管堆内存空间,将其释放,然[/b] [/b]然后将剩余的[/b]0[/b]代对象放入[/b]1[/b]代中,将新对象放入[/b]0[/b]代中;[/b][/b]
A[/b] | B[/b] | D[/b] | F[/b] | G[/b] |
第 1 [/b]代[/b] [/b]第[/b] 0 [/b]代[/b][/b]
然后将剩余的[/b]1[/b]代对象放入[/b]2[/b]代中,将剩余的[/b]0[/b]代对象放入[/b]1[/b]代中,将新对象放入[/b]0[/b]代中;[/b][/b]
A[/b] | D[/b] | F[/b] | H[/b] |
第[/b] 2 [/b]代[/b] [/b]第[/b]1[/b]代[/b] [/b]第[/b]0[/b]代[/b][/b]
第0代对象预算对象容量为256k,第1代对象预算对象容量为2M;第2代对象预算对象容量为10M;
相关文章推荐
- c#每日小结 <五>
- c#每日小结 <一>
- c#每日小结 <七>
- c#每日小结 <四>
- c#每日小结 <二>
- c#每日小结 <三>
- c#每日小结 <八>
- c#每日小结 <六>
- redis练习手册<九>List主要操作函数小结
- C# List<T>的用法小结
- C#中IList<>和List<>的区别小结
- C# List<T> Contains<T>()的用法小结
- 短信猫软件的实现(C#)<九>7bitPDU的编码
- C# nullable<T> 用法小结
- <javascript>每日小结
- C#中的Action<>和Func<>
- C#中的List<string>泛型类示例
- 浅析C#中的Func<>委托
- Windows核心编程<读书笔记九>手把手写Queue程序
- c#实现超实用的<证件照换底色>小工具