JAVA垃圾收集原理 ***@******@11“Garbage collection(GC) is a form of automaticmemory management. Thegarbage collector, or justcollector, attempts to reclaimgarbage, or memory occupied byobjectsthat are no longer in use by theprogram” - Wikipedia自动内存管理年代还有必要学习和了解GC?垃圾收集器做什么??释放非存活对象占据的内存空间?管理内存,决定了内存分配机制垃圾收集器如何做??检测出垃圾对象?直接方式:引用计数?间接方式: 追踪对象引用图?回收垃圾对象所占用的内存空间?直接清除?压缩?拷贝?必须决定什么时候进行回收垃圾算法的基本要求?必须是安全的,存活数据不能被错误回收?应该是全面的,垃圾对象会在固定的收集周期被回收?应该有合理的开销,时间/空间/运行频率?尽可能少的内存碎片?应该是可扩展的,不会成为可扩展瓶颈常用的GC算法和策略?引用计数器(渐进式)?标记-清扫垃圾收集?节点复制垃圾收集?标记-缩并垃圾收集?分代垃圾收集?并发垃圾收集?分布式垃圾收集?自适应动态垃圾收集引用计数器Pros?实现简单,能快速判断对象是否在使用?交织在程序中执行,不会挂起应用Cons?无法处理循环引用?给程序执行带来额外的开销?与用户程序紧密的耦合标记-清扫算法Pros?非常自然的处理环形结构?操纵指针没有额外的开销Cons?停止-启动算法,STW问题?内存碎片问题渐进复杂度正比与堆的大小
JAVA垃圾收集 来自淘豆网m.daumloan.com转载请标明出处.