内存分配和垃圾回收
2011-07-26 11:02
169 查看
.NetFrameWork
解释.NET Framework 的垃圾回收器管理应用程序的内存分配和释放。(面试)
首先要实例化新对象,计算字段所需的空间 对象所需的空间包括两部分:同步索引块和类型对象指针 在分配内存在事后,新对象的指针指向下一个可用内存区域、
首先是在托管堆中给线程堆栈中的对象分配内存空间 ,经过一段时间后会遍历线程堆栈 如果对象使用完了会在线程堆栈中出栈 在线程堆栈中寻找那些在托管堆中分配了内存的对象
如果没有找到 说明该对象已经从线程堆栈中出栈 不再使用了 这时就会从托管堆里把给它分配的内存释放掉。然后压缩托管堆 通过新对象的指针为新对象分配内存
然后描述托管堆中是怎么进行内存分配和垃圾回收的:
利用代(就是对象在内存中存放的时间长短)这种垃圾收集器来给对象分配内存:分配方式:
CLR支持3代内存:第0代对象的预算容量为256K 第1代对象预算容量为2M 第2代对象预算容量为10M
托管堆中没有任何对象,此时添加的对象为0代对象
当0代对象达到256K了 即0代对象放满了就开始垃圾回收 找到不再使用的就释放掉 然后把原来的还使用的放到一代中,新添加的对象放到0代中 当第二次添加的对象的0代也放满了 就启用垃圾回收把此时的0代放到1代中 把最开始的0代放到2代中
http://home.cnblogs.com/wz/关于这部分 博客园里有转载的专家‘深奥’的解释 呵呵
解释.NET Framework 的垃圾回收器管理应用程序的内存分配和释放。(面试)
首先要实例化新对象,计算字段所需的空间 对象所需的空间包括两部分:同步索引块和类型对象指针 在分配内存在事后,新对象的指针指向下一个可用内存区域、
首先是在托管堆中给线程堆栈中的对象分配内存空间 ,经过一段时间后会遍历线程堆栈 如果对象使用完了会在线程堆栈中出栈 在线程堆栈中寻找那些在托管堆中分配了内存的对象
如果没有找到 说明该对象已经从线程堆栈中出栈 不再使用了 这时就会从托管堆里把给它分配的内存释放掉。然后压缩托管堆 通过新对象的指针为新对象分配内存
然后描述托管堆中是怎么进行内存分配和垃圾回收的:
利用代(就是对象在内存中存放的时间长短)这种垃圾收集器来给对象分配内存:分配方式:
CLR支持3代内存:第0代对象的预算容量为256K 第1代对象预算容量为2M 第2代对象预算容量为10M
托管堆中没有任何对象,此时添加的对象为0代对象
当0代对象达到256K了 即0代对象放满了就开始垃圾回收 找到不再使用的就释放掉 然后把原来的还使用的放到一代中,新添加的对象放到0代中 当第二次添加的对象的0代也放满了 就启用垃圾回收把此时的0代放到1代中 把最开始的0代放到2代中
http://home.cnblogs.com/wz/关于这部分 博客园里有转载的专家‘深奥’的解释 呵呵
相关文章推荐
- 深入理解java虚拟机(六):java垃圾收集分析实战(内存分配与回收策略)
- JVM结构、内存分配、垃圾回收算法、垃圾收集器
- Java内存分配与垃圾回收(二)
- Java内存分配及垃圾回收
- Java内存分配机制 垃圾回收 GC Root
- 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配
- java虚拟机系列--内存分配与垃圾回收机制
- 读书笔记之--Java虚拟机精讲第六章内存分配与垃圾回收
- Chapter3.1 垃圾回收器与内存分配策略一
- 垃圾收集器与内存分配策略-内存分配与回收策略
- .NET Framework-垃圾回收器实现内存的分配、释放,文件的操作和IO流
- jvm学习记录--06 垃圾回收对象内存分配策略
- 内存分配与垃圾回收(一)
- V8 内存分配与垃圾回收
- Java的垃圾收集算法、垃圾收集器以及内存分配与回收策略
- Chapter3.1 垃圾回收器与内存分配策略二
- Java内存分配及垃圾回收
- Java虚拟机垃圾回收(四) 总结:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法
- (转)Java 内存区域分配和垃圾回收(GC)机制
- 内存分配与垃圾回收(二)