- 什么是Java回收机制?
回收机制也叫做GC - 为什么要有垃圾回收机制?
在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象 的内存时,该内存便成为垃圾。 垃圾回收能自动释放内存空间,减轻编程的负担,JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对 象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用的对象,垃圾回收也可以清除内存记录碎片。由于创建对象和垃圾回收器释放丢弃对象所占的内存空间,内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存洞。碎片整理将所占用的堆内存移到堆的一端,JVM将整理出的内存分配给新的对象。 - GC如何发现垃圾
目前Java的在使用的回收机制是根搜索算法,(就是当堆里的对象没有被方法区,本地方法栈和虚拟机栈引用时),GC会判断这个对象没有被引用,这时候就符合GC回收的标准 - GC什么时候来回收垃圾
GC的回收的时间是不确定的 - GC怎么清理垃圾
目前GC使用分代手机算法,总共分为3个代,新生代、老年代和永久代(可以理解为人的寿命),首先在堆里的每个新的对象都会被放入新生代的伊甸园、这里也是GC最常来的区域,每次来判断新对象是否被其他区域引用,当伊甸园里的对象好几次没有被回收时,就会放入后面的生存区,而GC会相对对后面代的对象(老油条)少去几次,从而达到减少性能消耗的作用
- 如何查看堆中的对象
可以使用JDK中自带的工具查看
Java回收机制
最新推荐文章于 2024-04-30 20:25:06 发布