全国咨询/投诉热线:400-618-9090

首页技术文章正文

Java垃圾回收机制[黑马程序员]

更新时间:2019-11-13 来源:黑马程序员 浏览量:

在Java中,当一个对象成为垃圾后仍会占用内存空间,时间一长,就会导致内存空间的不足。针对这种情况,Java中引入了垃圾回收机制。程序员不需要过多关心垃圾对象回收的问题,Java虚拟机会自动回收垃圾对象所占用的内存空间。

 

一个对象在成为垃圾后会暂时地保留在内存中,当这样的垃圾堆积到一定程度时,Java虚拟机就会启动垃圾回收器将这些垃圾对象从内存中释放,从而使程序获得更多可用的内存空间。除了等待Java虚拟机进行自动垃圾回收,也可以通过调用System. gc()方法来通知Java虚拟机立即进行垃圾回收。当一个对象在内存中被释放时,它的finalize()方法会被自动调用,因此可以在类中通过定义finalize()方法来观察对象何时被释放。接下来通过一个案例来演示Java虚拟机进行垃圾回收的过程。例如la.java。

 

class Person {

    //下面定义的fina1ize方法会在垃圾回收前被调用

    public void finalize(){

        System.out.println("对象将被作为垃圾回收……");

    }

}   

public class la{

    public static void main(String[] args) {

        //下面是创建了两个 Person对象

        Person p1 = new Person();

        Person p2 = new Person();

        // 下面将两个变量置为null。让对象成为垃圾

        p1 = null;

        p2 = null;

        // 调用方法进行垃圾回收

        System.gc();

        for (int i =0; i < 10000000; i++ ) {

            // 为延长程序的运行时间 

        }

    }

}

 

运行结果如图

1573627132785_Java垃圾回收机制.jpg

 

在上面例子中定义了一个 finalize()方法,该方法的返回值必须为void,并且要使用 public来修饰。在 main()中创建了两个对象p1和p2,然后将两个变量置为null,这意味着新创建的两个对象成为垃圾了,紧接着通过“Systen.gc()”语句通知虚拟机进行垃圾回收。从运行结果可以看出,虚拟机针对两个垃圾对象进行了回收,并在回收之前分别调用两个对象的finalize()方法。

 

需要注意的是,Java虚拟机的垃圾回收操作是在后台完成的,程序结束后,垃圾回收的操作也将终止。因此,在程序的最后使用了一个for循环,延长程序运行的时间,从而能够更好地看到垃圾对象被回收的过程。

本文来自:黑马程序员


猜你喜欢:

毕向东Java基础入门视频教程下载

自学java好还是去培训java好?


javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

http://www.itcast.cn/subject/uizly/index.shtml?seozxuids

14天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

8天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

0天免费试学

基础班入门课程限时免费

申请试学名额

12天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

10天免费试学

基础班入门课程限时免费

申请试学名额
在线咨询 我要报名