JVM内存垃圾回收机制

来源:互联网 发布:putty阿里云服务器 编辑:程序博客网 时间:2024/05/16 11:50

    “堆”是一个“运行时”数据区,是通过new等指令建立的,Java的堆是有Java的垃圾回收机制来负责处理的。堆是动态分配内存大小,垃圾收集器可以自动回收不再使用的内存空间。所谓的内存垃圾,是指在堆上开辟的内存空间,在不用的时候就变成了“垃圾”。
    Java中,这部分“垃圾”可以被Java虚拟机的一个程序发现并自动清除掉。Java语言提供了一个系统级的线程级——垃圾收集器线程,来跟踪每一块分配出去的内存空间,当JVM处于空闲循环时,自动回收每一块可以回收的内存。
    垃圾收集器完全是自动被执行的,它不能被强制执行。程序员可以做的只是调用System.gc()来“建议”执行垃圾收集器程序。将对象的引用变量初始化为null值,来暗示垃圾收集器来收集该对象。
    finalize()在该对象垃圾回收前调用。
    JVM使用的是分代垃圾回收的方式,主要是因为在程序运行的时候会有如下特点:
    1.大多数对象在创建后很快就没有对象使用它了。
    2.大多数在一直被使用的对象很少再去引用新创建的对象。
    因此就将Java对象分为年轻对象和年老对象。JVM将内存分为两个区域,分别称为“新生代”和“老生代”。“新生代”区域中绝大多数新创建对象都存放在这个区域里,一般来说较小而且垃圾回收频率较高。“老生代”区域中存放的是在“新生代”中生存了较长时间的对象,这些对象将被转移到“老生代”区。

原创粉丝点击