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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

检查不被使用和指向的对象把它删除。
====GC是在什么时候,对什么东西,做了什么事情?

1、什么时候

a、系统空闲的时候

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

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

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

2、对什么东西

a、不使用的对象

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

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

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

3、做什么

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()函数的时候;当然可以通过调优,用NewRatio控制newObject和oldObject的比例,用MaxTenuringThreshold 控制进入oldObject的次数,使得oldObject 存储空间延迟达到full gc,从而使得计时器引发gc时间延迟OOM的时间延迟,以延长对象生存期。

2、对什么东西

a、不使用的对象

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

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

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

3、做什么

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

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

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

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

GC(垃圾处理机制)面试加薪必备相关推荐

  1. Android工程师进阶第一课 夯实Java基础 JVM内存模型和GC回收机制

    开篇词:跳出舒适区,走在Android行业的前端 你好,我是姜新星,一个深耕 Andorid 领域的老工程师. 记得 2010 年毕业典礼上,某位老师说"你们是最幸福的一届毕业生,正好赶上中 ...

  2. JAVA之JVM垃圾回收(GC)机制详解

    一.为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收.除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此.所以,垃圾回收是必须的. 二. ...

  3. Java垃圾回收(GC)机制详解

    Java垃圾回收(GC)机制详解 转自:https://www.cnblogs.com/xiaoxi/p/6486852.html 一.为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因 ...

  4. java面试线程必备知识点,怼死面试官,从我做起

    转载自 java面试线程必备知识点,怼死面试官,从我做起 |--多线程一定好么? cpu密集不好 io密集好 |--如何减少上下文切换: 无锁并发(数据id根据Hash分段).CAS.最少线程 |-- ...

  5. java gc回收机制种类_JAVA的垃圾回收机制(GC)

    1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制. 2.什么时候 ...

  6. Spring框架面试工作必备锦囊 Java框架-Spring

    Spring框架面试工作必备锦囊 Java框架-Spring spring framework 有哪些核心模块? spring-core:spring基础API模块,如资源管理泛型处理 spring- ...

  7. 职场人士升职加薪必备的工作软件,总有一款适合你

    俗话说"工欲善其事,必先利其器".想要工作做的得好,手中好用的软件少不了.下面这几个升职加薪必备的工作软件值得拥有! Pixso 这是一款基于云端操作的多人协同设计软件,程序设计员 ...

  8. 【phar反序列化与GC回收机制的利用】

    认识phar phar是什么?简单来说就是把php压缩而成的打包文件,无需解压,可以通过phar://协议直接读取内容 ,大多数PHP文件操作允许使用各种URL协议去访问文件路径:如data://,z ...

  9. 5款宝藏级高效办公软件,升职加薪必备,用一次就爱上

    如今,大部分朋友的工作应该都离不开电脑,电脑软件更是数不胜数,但我们不可能把每个都装上吧?所以更加要挑选好用的.实用的,今天小葱给大家分享5款超级好用的高效办公软件,升职加薪必备哦! 1. wolai ...

最新文章

  1. oracle双机切换 无法挂载,Linux下Oracle RAC一个节点宕机导致共享存储无法挂载的故障排除...
  2. nginx不记录指定文件类型的日志
  3. 高光谱提取薯叶特征波长
  4. [paper reading] YOLO v1
  5. 使用CrossOver的Wine配置修改容器WIndows系统版本
  6. asp.net core 读取json文件
  7. 微软tfs项目管理工具_研究Project2010+TFS2010项目需求管理功能
  8. android 4.4 zygote 开机速度,一种安卓系统快速开机的方法及装置的制造方法
  9. pe修改服务器2003密码,一文教你3分钟搞定忘记的windows密码
  10. Mybatis在xml文件中处理大于号小于号的方法
  11. iverilog -- ivlpp 词法与语法分析解读
  12. 云计算:细分之七大类商业模式
  13. C:勇敢羊羊不怕困难!2022-2023年度第四届全国大学生算法设计与编程挑战赛(秋季赛)之羊驼
  14. Cassandra repair 工具使用
  15. 杰理AC692X---U盘播放无损音乐卡顿问题
  16. Android判断手机ROM 手机os
  17. info在python中的意思_isinstance在python中的意思是什么?
  18. 操作系统 - 文件管理实验(文件系统)
  19. macOS Big Sur 11.2候选版本发布黑屏怎么办
  20. 如何运用计算机建设家乡,大学计算机实践汇报烟台家乡网页ppt制作.doc

热门文章

  1. 一文读懂密码学中的证书
  2. Leet Code OJ 119. Pascal's Triangle II [Difficulty: Easy]
  3. 注解不自动导包_玩转SpringBoot2.X:SpringBoot自动配置原理大揭秘
  4. python爬虫机器人价格_Python
  5. 【三万字!】Dubbo、Zookeeper学习笔记!秒杀面试官!——双非上岸阿里巴巴系列
  6. 【图示解析】不同进制之间的表示与转换
  7. python在文本添加超链接_Python将超链接文本打印到Spyder控制台(Python print hyperlinked text to Spyder Console)...
  8. python遍历目录下所有文件_Python递归遍历目录下所有文件
  9. Mybatis逆向生成报错:.\mbg.xml (系统找不到指定的文件)
  10. 集群(三)——haproxy+nginx搭建web集群