第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Java面試題:垃圾回收機(jī)制詳解

標(biāo)簽:
Java 面試 JVM
垃圾收集:

Java垃圾回收是Java程序自动管理内存的过程。

Java程序会被编译成字节码,可以在Java虚拟机(简称JVM)上执行。在JVM上运行的Java程序中,对象会在堆中创建,堆是专门用于程序对象的内存区域。

到最后,一些对象将不再被需要。垃圾收集器找到这些不再使用的对象然后删除它们,从而释放内存空间。

让对象可以被垃圾回收的方法
  • 即使程序员不需要负责销毁无用的对象,但强烈建议这样做,在不再需要某个对象时使其不可达(从而可以被垃圾回收)。
  • 通常有四种方法可以让对象可以被垃圾回收。

1.将引用变量设置为 null:将引用变量设置为 null,如果没有其他引用指向该对象,该对象将可以被垃圾回收器回收。

2. 重新分配引用变量的指向:改变现有引用变量所指向的对象,使之在没有其他引用指向它时,成为垃圾回收的候选对象。

3. 在方法内部创建的对象:在方法内部创建的对象,一旦方法结束且不再有引用指向它,就可以被垃圾回收机制回收。

4. 孤立的岛屿:当一个对象无法从任何活的线程或静态引用中触及或到达时,它就变得孤立无援,并就可以被垃圾回收机制回收。

孤岛的例子

触发JVM垃圾收集的方法

在 Java 中,让一个对象成为垃圾回收的对象候选并不能保证它会被立即回收。JVM 会根据需要运行垃圾回收器。你可以通过以下方式来请求垃圾回收。

  1. **System.gc()**:系统类中的一个静态方法,用于垃圾回收。
  2. **Runtime.getRuntime().gc()**:运行时对象中的一个方法,用于垃圾回收。

然而,这两种都无法保证垃圾收集器真的会启动。

最终步骤 :
垃圾收集器在回收对象之前通常会调用 finalize() 方法:

在销毁一个对象之前,垃圾回收器会调用该对象的 finalize() 方法来进行清理工作。这个方法在 Object 类中定义,其原型为 protected void finalize() throws Throwable,可以被重写以管理资源,比如关闭与数据库的连接。

关于 finalize() 的一些要点:

  • 它由垃圾回收器负责,垃圾回收器是JVM的一部分。
  • 默认实现为空,因此建议重写它以进行清理。
  • 对象的 finalize() 方法永远不会被调用超过一次。
  • 如果在 finalize() 中发生未捕获的异常,该异常将被忽略,对象的终结过程结束。
垃圾收集器的种类:

顺序垃圾收集器(garbage collector)

  • 使用单线程收集;非常适合内存需求低的小型应用。

并行垃圾回收器

  • 使用多个线程来处理小集合;最适合需要高吞吐量的应用,例如,这类应用可能包括某些数据库操作或并发任务处理。

并发标记-清除(CMS)收集器

  • 减少暂停时间,与应用线程并行运行;非常适合低延迟的应用场景。

G1 (G1垃圾收集器):

  • 将内存堆分成多个区域,优先处理垃圾最多的部分;适用于需要预测暂停时间的大应用。
问题:
什么是Mark-and-sweep?

MarkSweep 是垃圾收集的两个阶段。在 Mark 阶段,JVM 会识别对象是否仍被引用。不再被引用的对象将被标记以进行 GC。

Sweep(清理)阶段,JVM进行垃圾回收算法。

不同时代线程是什么?垃圾回收器是后台线程吗?

在应用程序中运行的后台线程称为守护(daemon)线程。

没错,GC 是由 JVM 启动的一个后台线程。

垃圾收集器对一个对象调用了 finalize() 方法多少次?

就一次。

代码里能不能触发垃圾收集?

我们可以通过调用 system.gc,不过不能保证它一定会被调用。

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消