问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java垃圾收集器收集标准

发布网友 发布时间:2022-04-29 23:15

我来回答

4个回答

热心网友 时间:2022-06-25 14:34

Java垃圾收集器与类的finalize()方法总结

1.垃圾收集器的工作目标是回收已经无用的对象的内存空间,从而避免内存渗漏体的产生,节省内存资源,避免程序代码的崩溃。

2.垃圾收集器判断一个对象的内存空间是否无用的标准是:如果该对象不能再被程序中任何一个"活动的部分"所引用,此时我们就说,该对象的内存空间已经无用。所谓"活动的部分",是指程序中某部分参与程序的调用,正在执行过程中,尚未执行完毕。

3.垃圾收集器线程虽然是作为低优先级的线程运行,但在系统可用内存量过低的时候,它可能会突发地执行来挽救内存资源。当然其执行与否也是不可预知的。

4.垃圾收集器不可以被强制执行,但程序员可以通过调用System. gc方法来建议执行垃圾收集器。
5.不能保证一个无用的对象一定会被垃圾收集器收集,也不能保证垃圾收集器在一段Java语言代码中一定会执行。因此在程序执行过程中被分配出去的内存空间可能会一直保留到该程序执行完毕,除非该空间被重新分配或被其他方法回收。由此可见,完全彻底地根绝内存渗漏体的产生也是不可能的。但是请不要忘记,Java的垃圾收集器毕竟使程序员从手工回收内存空间的繁重工作中解脱了出来。设想一个程序员要用C或C++来编写一段10万行语句的代码,那么他一定会充分体会到Java的垃圾收集器的优点!

6.同样没有办法预知在一组均符合垃圾收集器收集标准的对象中,哪一个会被首先收集。

7.循环引用对象不会影响其被垃圾收集器收集。

8.可以通过将对象的引用变量(reference variables,即句柄handles)初始化为null值,来暗示垃圾收集器来收集该对象。但此时,如果该对象连接有事件*(典型的 AWT组件),那它还是不可以被收集。所以在设一个引用变量为null值之前,应注意该引用变量指向的对象是否被监听,若有,要首先除去*,然后才可以赋空值。

9.每一个对象都有一个finalize( )方法,这个方法是从Object类继承来的。

10.finalize( )方法用来回收内存以外的系统资源,就像是文件处理器和网络连接器。该方法的调用顺序和用来调用该方法的对象的创建顺序是无关的。换句话说,书写程序时该方法的顺序和方法的实际调用顺序是不相干的。请注意这只是finalize( )方法的特点。

11.每个对象只能调用finalize( )方法一次。如果在finalize( )方法执行时产生异常(exception),则该对象仍可以被垃圾收集器收集。

12.垃圾收集器跟踪每一个对象,收集那些不可到达的对象(即该对象没有被程序的任何"活的部分"所调用),回收其占有的内存空间。但在进行垃圾收集的时候,垃圾收集器会调用finalize( )方法,通过让其他对象知道它的存在,而使不可到达的对象再次"复苏"为可到达的对象。既然每个对象只能调用一次finalize( )方法,所以每个对象也只可能"复苏"一次。

13.finalize( )方法可以明确地被调用,但它却不能进行垃圾收集。

14.finalize( )方法可以被重载(overload),但只有具备初始的finalize( )方法特点的方法才可以被垃圾收集器调用。

15.子类的finalize( )方法可以明确地调用父类的finalize( )方法,作为该子类对象的最后一次适当的操作。但Java编译器却不认为这是一次覆盖操作(overriding),所以也不会对其调用进行检查。

16.当finalize( )方法尚未被调用时,System. runFinalization( )方法可以用来调用finalize( )方法,并实现相同的效果,对无用对象进行垃圾收集。

17.当一个方法执行完毕,其中的局部变量就会超出使用范围,此时可以被当作垃圾收集,但以后每当该方法再次被调用时,其中的局部变量便会被重新创建。

18.Java语言使用了一种"标记交换区的垃圾收集算法"。该算法会遍历程序中每一个对象的句柄,为被引用的对象做标记,然后回收尚未做标记的对象。所谓遍历可以简单地理解为"检查每一个"。

19.Java语言允许程序员为任何方法添加finalize( )方法,该方法会在垃圾收集器交换回收对象之前被调用。但不要过分依赖该方法对系统资源进行回收和再利用,因为该方法调用后的执行结果是不可预知的。 通过以上对垃圾收集器特点的了解,你应该可以明确垃圾收集器的作用,和垃圾收集器判断一块内存空间是否无用的标准。简单地说,当你为一个对象赋值为null并且重新定向了该对象的引用者,此时该对象就符合垃圾收集器的收集标准。

热心网友 时间:2022-06-25 14:34

程序段1
3.fobj = new Object ( ) ; //第3行的fobj被赋于了一个新对象,在第1行赋予的旧对象就可以被回收了。所以说“符合回收了”。

程序段2:
4.aobj = bobj; //aobj转移到bobj,第1行赋予的旧对象就可被回收。
6.cobj = null; //该行cobj虽然为null,但cobj的旧对象在第5行被赋予给了aobj,有变量aobj引用,旧对象仍不能被回收。
7.aobj = null; //aobj指空,原cobj的、转移给aobj的对象可被回收了。

这里强调“可被回收”,不意味“立即回收”,什么时候回收,那是垃圾回收器决定的事情。追问恩 谢谢你 差不多快明白了
看程序段2第4行
答案上说
行4:此时对象aobj的句柄指向bobj,所以该行的执行不能使aobj符合垃圾收集器的收集标准。
这是指什么意思啊

追答书上有可能描述或理解出了偏差。先不管书,你只管自己理解就行。
4.aobj = bobj;
//aobj指向bobj的对象,第1行赋予aobj的旧对象new Object() 就可被回收。
//由于aobj指向bobj的对象,现在就不能回收当前aobj指向的对象。
//这种“现在就不能回收当前aobj指向的对象”也许是你书写的“不能使aobj符合垃圾收集器的收集标准”的不同表述或相同的意思。

热心网友 时间:2022-06-25 14:35

亲 GC不是这么玩的
各大厂商对GC实现也不尽相同

热心网友 时间:2022-06-25 14:36

java垃圾收集器收集标准

设想一个程序员要用C或C++来编写一段10万行语句的代码,那么他一定会充分体会到Java的垃圾收集器的优点!6.同样没有办法预知在一组均符合垃圾收集器收集标准的对象中,哪一个会被首先收集。7.循环引用对象不会影响其被垃圾收集器收集。8.可以通过将对象的引用变量(reference variables,即句柄handles...

一文带你了解经典的Java垃圾回收机制

//演示请求JVM运行垃圾收集器的Java程序publicclassTest{publicstaticvoidmain(String[]args)throwsInterruptedException{Testt1=newTest();Testt2=newTest();//取消引用变量t1=null;//请求JVM来运行垃圾收集器System.gc();//取消引用变量t2=null;//请求JVM来运行垃圾收集器Runtime.getRuntime().gc();...

java中的垃圾回收机制是怎样的?

java 的垃圾回收机制:1.垃圾回收是由虚拟机自动执行,不能人为地干预。2.系统比较空闲(垃圾回收线程)3.对象不在被引用.对象处于引用的隔离岛状态(隔离引用),对象具备了回收的条件 4.gc()方法,可以建议虚拟机执行垃圾回收,但是不能确定是否会执行回收。

Java垃圾回收怎么理解?

总之,在Java语言中,判断一块内存空间是否符合垃圾收集器收集标准的标准只有两个: 1.给对象赋予了空值null,以下再没有调用过。 2.给对象赋予了新值,既重新分配了内存空间。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 归映hh 2015-09-01 · TA获得超过246个赞 知道答主 回答量:176 采纳率...

java垃圾是怎么回收的,回收算法

(7)并行收集器 并行收集器使用某种传统的算法并使用多线程并行的执行它们的工作。在多CPU机器上使用多线程技术可以显著的提高java应用程序的可扩展性。(8)自适应收集器 根据程序运行状况以及堆的使用状况,自动选一种合适的垃圾回收算法。这样可以不局限与一种垃圾回收算法。4. 火车算法 垃圾收集算法...

Java垃圾收集器问题

1,3会被垃圾收集 1,Object aobj = new Object(); //创建一个新实例 2,Object bobj = new Object(); //创建一个新实例 3,Object cobj = new Object(); //创建一个新实例 4,aobj=bobj;//aobj引用对象指向2的实体对象,所以1的实体对象会被收集 5,aobj=cobj;//a...

JVM垃圾收集机制

所谓jvm垃圾回收机制其实就是相较于于c、c++语言的优势之一是自带垃圾回收器,垃圾回收是指不定时去堆内存中清理不可达对象。垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,程序员唯一能做的就是通过调用System.gc 方法来建议执行垃圾收集器。

JAVA垃圾收集器

现存谈的是对象和引用,你创建一个Alpha a引用,就等于创建了三个引用,分别是a、a.b1、a.b2。当a被回收时(a=null),那么a.b1与a.b2都不能再使用。对象只有在没有引用时,才会被标记为垃圾!=== Beta b1 = new Beta();Beta b2 = new Beta();Alpha a1 = new Alpha();Alpha a2 = ...

JVM - 垃圾回收

Java 堆 = 新生代 + 老年代 方法区的垃圾回收:有人称为元空间,或者永久代,因为在方法区进行的垃圾回收的效果太差,或者说回收的性价比太低;常见的垃圾回收器垃圾主流的垃圾回收算法是什么? 垃圾收集算法是内存回收的方法论,垃圾收集器就是内存回收的实践者;换句话说:垃圾回收器与垃圾回收算法之间的逻辑是,垃圾回...

新一代垃圾回收器:G1详解

新一代垃圾回收器:G1详解 在了解G1收集器之前,需要回顾一下Java的GC(Garbage Collector)系统以及各种GC算法和收集器的历史。在堆内存中,对象由GC负责管理,以确保内存使用效率和程序稳定性。当程序创建新对象后,这些对象会被存储在堆中。然而,堆内存大小有限,因此需要GC在适当时候释放不再使用的...

java垃圾收集器有哪些 java默认垃圾收集器 java中垃圾收集 java自动垃圾收集 java垃圾收集cms jvm垃圾收集器 商业版java垃圾回收器 java 垃圾回收器 java垃圾回收器有哪些
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
牙龈上张一个脓包都半年了,现在每隔一两天就会张。而且是在同一个位 ... 怎么注销京东金融的白条呀? 我手指有十个圈圈,代表什么呢? word怎么复制一页一样的内容? 微信运动是怎么计算出来的? 如何把整页的word都复制下来? 屋里油漆味太重怎么办 淘宝开店做什么好? 猫咪取网名? 有关猫咪的网名有哪些? solidworks能进行数控编程吗 JAVA垃圾回收期 老年代和新生代是什么意思 java垃圾回收器问题 solidworks2021加工编程怎么样 Java 垃圾回收器回收效率。 一支穿云箭千万基佬来相见什么意思 什么是“女神三宝”?好困惑 啊 亲们支个招吧 女人的三宝是什么? 5G热点宝真的是免费的吗 关于二七班4字6句运动会口号 微博上那个有名的基佬名字是啥 如何看待《阴阳师》荒碎片价格很高的问题? 肖战是基佬吗? 李现姐恐同是什么意思 有没有谁知道右边穿基佬服的这个coser是谁?微博名是啥? 微博上的变态基佬怎么那么多 破产姐妹第三季第四集那个基佬的手机铃声 老板好每月准时发工资的微信语? 微博漫画上的基佬cp? 叫老板发工资,老板不在办公室,发微信说,要怎么说呢? java垃圾回收器可以马上收回内存---为什么或者说原理是什么 关于java垃圾回收器的一道题 《长津湖》有哪几部? 如何降低垃圾回收 java 《java编程思想》之垃圾回收器如何工作 用SW能不能进行数控编程? 长津湖出品方有和上海宏唐合作吗 数控加工中心编程绘图CAD,UG,PRE,SOLIDWORK哪个最好 三大导演联手,《长津湖》凭什么这么有底气? 2010年有什么流行歌曲好听的. 2010欧美流行音乐排行 网页登陆vcenter6.0显示503 server unavailable 零下40度抗美援朝冻死一个连是什么战役有电影吗? 2007---2010年最最好听的歌曲有哪些 vSphere Client连不上VCenter,VCenter已启动,linux版本。 长津湖以前拍过吗 魔兽争霸官方对战平台出现503Service是什么问题 吃鸡为什么看见别人作战记录? 冰血长津湖收视率 带鱼屏曲面显示器有值得夸的优点嘛?!