java面试-垃圾回收器谈谈你的理解

一、垃圾回收算法:

  • 引用计数
  • 复制算法
  • 标记-清除
  • 标记-整理

二、垃圾回收的方式:

串行(Serial)、并行(Parallel)、并发(CMS)、G1

1、串行垃圾回收器(Serial)

  • 它为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程,所以不适合服务器环境。

2、并行垃圾回收器(Parallel)

  • 多个垃圾收集线程并行工作,此时用户线程是暂停的,用于科学计算、大数据处理等弱交互场景。

3、并发垃圾回收器(CMS)

  • 用户线程和垃圾收集线程同时执行(不一定是并行,可能是交替执行),不需要停顿用户线程,互联网公司多用它,适用对相应时间有要求的场景。

4、G1 垃圾回收器

  • G1 垃圾回收器将堆内存分割成不同的区域然后并发的对其进行垃圾回收。

原文地址:https://www.cnblogs.com/wjh123/p/11144320.html

时间: 2024-10-12 07:59:55

java面试-垃圾回收器谈谈你的理解的相关文章

第5章(2) Java的垃圾回收器

终结处理 Java有垃圾回收器回收无用对象占据的内存资源.但垃圾回收器只知道释放经由new分配的内存,如果用其他的方法获得了一块"特殊"的内存区域,就需要我们自己完成清理工作.Java提供了finalize()方法来解决这一问题. finalize()方法: 工作原理:一但垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存. 其作用,换句话说就是:在你不再需要某个对象之前,如果必须执行某些动作,那么你

[Java基础]-- Java GC 垃圾回收器的分类和优缺点

https://blog.csdn.net/high2011/article/details/80177473?utm_source=blogxgwz2 所属专栏: Java 版权声明:尊重原创,转载请标明,本文转自 https://blog.csdn.net/high2011/article/details/80177473 关于Java的垃圾回收器,一直是个头疼的问题,这里简要说明下分类和优缺点,供选择使用. 一.JVM GC 垃圾回收器类型 JVM的垃圾回收器大致分为六种类型: 1.串行:

Java GC 垃圾回收器的类型小结

阅读了java paper的垃圾回收器类型文章,在此做一个小结,文章部分翻译自java paper gc collector,部分自己做的总结,图片来自网络,在此仅用作理解表达之用. 一.JVM GC 垃圾回收器类型 JVM的垃圾回收器大致分为四种类型: (图片来自网络) 1.串行垃圾回收器  Serial Garbage Collector 串行垃圾回收器在进行垃圾回收时,它会持有所有应用程序的线程,冻结所有应用程序线程,使用单个垃圾回收线程来进行垃圾回收工作. 串行垃圾回收器是为单线程环境而

[JVM 相关] Java 新型垃圾回收器(Garbage First,G1)

回顾传统垃圾回收器 HotSpot 垃圾收集器实现 Serial Collector(串型收集器) 使用场景,大多数服务器是单核CPU. 适用收集场景:1. 新生代收集(Young Generation Collection)2. 老年代收集(Old Generation Collection) Parallel Conllector(并行收集器) 又叫吞吐量收集器(throughput collector)应用于多核系统. 适用收集场景:1. 新生代收集是并行处理.2. 老年代收集和Seria

JAVA程序员面试宝典总结-谈谈我的理解吧

2014年9月7日 今天开启阅读了这本书,中断了原计划中算法中级层次的系统性训练,我觉得先看看面试题吧.先给这本书A掉再说. 阅读了一天,大概阅读了一半,有点失望,因为这本书讲解的面试都是基础中的基础,我看着都着急,作者很难深入系统层次的去谈论技术,都是一些表面的文章. 不过我给大家整理了一些比较细节的东西. 第五章开始吧: ----------------------------------------------------- classLoader知识. 整体调用用到的是父类委托.为什么这

[Think In Java]基础拾遗1 - 对象初始化、垃圾回收器、继承、组合、代理、接口、抽象类

目录 第一章 对象导论第二章 一切都是对象第三章 操作符第四章 控制执行流程第五章 初始化与清理第六章 访问权限控制第七章 复用类第九章 接口 第一章 对象导论 1. 对象的数据位于何处? 有两种方式在内存中存放对象: (1)为了追求最大的执行速度,对象的存储空间和生命周期可以在编写程序时确定,这可以通过将对象置于堆栈或者静态存储区域内来实现.这种方式牺牲了灵活性. (2)在被称为堆的内存池中动态地创建对象.在这种方式,知道运行时才知道对象需要多少对象,它们的生命周期如何,以及它们的具体类型.

总结Java垃圾回收器的方法和原理

1. 垃圾回收只与内存有关 在Java中,我们new完对象之后,垃圾回收器负责回收无用的对象占据的内存资源.这与C++不同,在C++中,准许使用局部对象,回收对象时候,需要用到finalize()析构函数.C++的对象创建在堆栈中,而Java对象创建在堆中,所以我们创建完对象之后,Java的垃圾回收器在堆中,会自动帮我们回收垃圾,至于何时回收垃圾,我们不得而知了. 2.垃圾回收用到的方法 (1)finalize() 该方法是用来回收“特殊”的内存,而这内存不是new出来的,所以垃圾回收器无法回收

java垃圾回收器的工作原理

Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况.自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担. 拥有垃圾收集器可以说是 Java 语言与 C++语言的一项显著区别.在 C++语言中,程序员必须小心谨慎地处理每一项内存分配,且内存使用完后必须手工释放曾经占用的内存空间.当内存释放不够完全时,即存在分配但永不释放的内存块,就会引起内存泄漏,严重时甚至导致程序瘫痪. 以下列举了垃圾回收器常用的算法及实验原理: 引用

JVM中的G1垃圾回收器

我们先回顾一下主流Java的垃圾回收器(HotSpot JVM).本文是针对堆的垃圾回收展开讨论的. 堆被分解为较小的三个部分.具体分为:新生代.老年代.持久代. 绝大部分新生成的对象都放在Eden区,当Eden区将满,JVM会因申请不到内存,而触发Young GC ,进行Eden区+有对象的Survivor区(设为S0区)垃圾回收,把存活的对象用复制算法拷贝到一个空的Survivor(S1)中,此时Eden区被清空,另外一个Survivor S0也为空.下次触发Young GC回收Eden+S