标签:
JVM运行时的内存块
在jvm中gc(垃圾回收机制)是Java立足点之一。垃圾自动回收可以让Java程序员减少与内存打交道,更专注于业务的开发与实现。
垃圾回收需要实现如下几点
关于垃圾回收的对象定义,主要有两种:
比如:a =new A(); 那么对象A是有引用的。但这种方式会出现死锁,就是有两个或者多个对象之间相互引用,但这些对象都是没用的。怎么办?
只有一个root,root与其他对象直接或间接关联,如果这个对象根部不可达,那么这个对象就“垃圾”
利用根部是否可达的方式没有死锁,是目前jvm gc的主流实现方式。当然未来的路还很长,说不定还有更好的算法实现呢?
何时回收?
垃圾对象的产生,一般都是周期回收。在回收垃圾的时候,停止运行的java程序
怎么回收?
进一步优化:
总会有一些对象会一直存在如静态变量,线程池。。。这些“老不死”就没必要老是检查它们了,可以减少检查和清理的周期。于是就有了,新生代,老生代,永久代
标签:
原文地址:http://www.cnblogs.com/zhongzheng123/p/5853054.html