您现在的位置是:首页 > 编程 > 

GC(垃圾处理机制)面试加薪必备

2025-07-27 16:24:46
GC(垃圾处理机制)面试加薪必备 1: 详细解释Java中垃圾收集的主要流程。垃圾收集主要有两种形式:手工、自动自动会不定期进行回收,以释放无用的空间手工调用的是System类中的gc()方法,此方法实际上调用的是Runtime类中的gc()方法,当一个对象被回收之前将调用类中的finlalize()方法,此方法为 Object类所提供,表示对象回收前的收尾工作。即使出现了异常,也不影响程序的执行

GC(垃圾处理机制)面试加薪必备

1: 详细解释Java中垃圾收集的主要流程。

垃圾收集主要有两种形式:手工、自动

自动会不定期进行回收,以释放无用的空间

手工调用的是System类中的gc()方法,此方法实际上调用的是Runtime类中的gc()方法,当一个对象被回收之前将调用类中的finlalize()方法,此方法为 Object类所提供,表示对象回收前的收尾工作。即使出现了异常,也不影响程序的执行,而且此方法抛出的是Throwable,表示可能是异常也可能是错误。

2、GC是什么? 为什么要有GC?

GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

、垃圾回收的优点和原理。并考虑2种回收机制。

Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制, Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

4、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

5、垃圾回收机制,如何优化程序?

代码语言:javascript代码运行次数:0运行复制
Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的w时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。

垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。

回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

垃圾回收机制 垃圾收集是将分配给对象但不再使用的内存回收或释放的过程。如果一个对象没有指向它的引用或者其赋值为null,则次对象适合进行垃圾回收.

垃圾回收机以低优先级运行

检查不被使用和指向的对象把它删除。

====GC是在什么时候,对什么东西,做了什么事情?

1、什么时候

a、系统空闲的时候

b、系统自身决定,不可预测的时候调用gc

c、eden区满了调用minor gc(),升级到老年代的对象大于老年代剩余空间调用full gc()

d、程序员不能具体控制时间,系统在不可预测的时间调用System.gc()函数的时候;当然可以通过调优,用ewRatio控制newObject和oldObject的比例,用MaxTenuringThreshold 控制进入oldObject的次数,使得oldObject 存储空间延迟达到full gc,从而使得计时器引发gc时间延迟OOM的时间延迟,以延长对象生存期。

2、对什么东西

a、不使用的对象

b、超出作用域的对象,计步器为空的对象

c、从gc root开始搜索,搜不到的对象

d、超出了作用域或引用计数为空的对象;从gc root开始搜索不到的对象,而且经过一次标记、清理,仍然没有复活的对象。

、做什么

a、删除不使用的对象,腾出内存空间

b、随便说说一些停止线程,运行finalize的说明

c、说说eden区和from suvivor和to suvivor干啥用的,老年代中的标记清理和复制清理等等

d、删除不使用的对象,回收内存空间;运行默认的finalize,当然程序员想立刻调用就用dipose调用以释放资源如文件句柄,JVM用from survivor、to survivor对它进行标记清理,对象序列化后也可以使它复活。

  GC是在什么时候,对什么东西,做了什么事情?

1、什么时候

a、系统空闲的时候

b、系统自身决定,不可预测的时候调用gc

c、eden区满了调用minor gc(),升级到老年代的对象大于老年代剩余空间调用full gc()

d、程序员不能具体控制时间,系统在不可预测的时间调用System.gc()函数的时候;当然可以通过调优,用ewRatio控制newObject和oldObject的比例,用MaxTenuringThreshold 控制进入oldObject的次数,使得oldObject 存储空间延迟达到full gc,从而使得计时器引发gc时间延迟OOM的时间延迟,以延长对象生存期。

2、对什么东西

a、不使用的对象

b、超出作用域的对象,计步器为空的对象

c、从gc root开始搜索,搜不到的对象

d、超出了作用域或引用计数为空的对象;从gc root开始搜索不到的对象,而且经过一次标记、清理,仍然没有复活的对象。

、做什么

a、删除不使用的对象,腾出内存空间

b、随便说说一些停止线程,运行finalize的说明

c、说说eden区和from suvivor和to suvivor干啥用的,老年代中的标记清理和复制清理等等

d、删除不使用的对象,回收内存空间;运行默认的finalize,当然程序员想立刻调用就用dipose调用以释放资源如文件句柄,JVM用from survivor、to survivor对它进行标记清理,对象序列化后也可以使它复活。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2022-02-24,如有侵权请联系 cloudcommunity@tencent 删除gc程序员对象垃圾回收面试

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1246609.html

相关标签:无
上传时间: 2025-07-27 10:29:56
留言与评论(共有 20 条评论)
本站网友 第二个太阳
11分钟前 发表
4
本站网友 腰俞
28分钟前 发表
什么时候a
本站网友 阿来泰国餐厅
25分钟前 发表
程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收
本站网友 金碧世纪花园
20分钟前 发表
表示可能是异常也可能是错误
本站网友 武汉网吧转让
27分钟前 发表
说说eden区和from suvivor和to suvivor干啥用的
本站网友 胎儿发育标准
20分钟前 发表
JVM用from survivor
本站网友 特事特办
29分钟前 发表
有效的使用可以使用的内存
本站网友 买买买
1分钟前 发表
运行finalize的说明c
本站网友 麻匪
25分钟前 发表
以延长对象生存期
本站网友 小辉辉事件
27分钟前 发表
对什么东西a
本站网友 处女膜修复术
30分钟前 发表
也不影响程序的执行
本站网友 网游之傻人有傻福
21分钟前 发表
程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收
本站网友 全面攻击
26分钟前 发表
Java中的对象不再有"作用域"的概念
本站网友 射频同轴电缆
14分钟前 发表
GC就开始监控这个对象的地址
本站网友 在线照相
16分钟前 发表
什么时候a
本站网友 九毒日
20分钟前 发表
超出了作用域或引用计数为空的对象;从gc root开始搜索不到的对象
本站网友 真三显血
22分钟前 发表
腾出内存空间b
本站网友 企业宣传片制作公司
11分钟前 发表
GC就有责任回收这些内存空间
本站网友 太子参的功效
17分钟前 发表
增量垃圾回收