当前位置:首页 > 虚拟机 > 正文

深入理解java虚拟机百度云


一、说说JVM常用垃圾回收器的特点、优劣势、使用场景和参数设置

Java中的垃圾收集通常是对话中的一个注意点。无论你在实际开发中使用了多少,你仍然需要对其有更深入的了解,这样才不会在对话中崩溃。

本文简要介绍了JVM中常用的几种垃圾收集器的主要特性、使用场景以及最佳建议。

新生代的收集器

老年代的守护者

新生代和老年代的收集器

串行收集器是最基本、最古老的收藏家。开发中。在JDK1.3.1之前,唯一的选择是新一代的HotSpot集合。

运行方案

具有以下特点:

简单高效单CPU,不需要上下文之间的切换,因此效率比较高。

您将在用户不知情的情况下停止所有工作线程。

在用户的任务调度中,可用内存通常不大,垃圾回收可以在短时间内完成

限制对于单CPU环境,Serial收集器没有以下开销改变线材和单线程收集的整体效率

ParNew收集器实际上是Serial收集器的多线程版本。

操作图标主义

多线程版本的Serial可以更有效地利用系统资源

与Serial相同,如果没有用户,所有工作都会被阻塞。了解线程

Server模式下的使用,它是Serial之外的一大亮点,目前它是唯一可以与CMS收集器配合使用的,也是最严重的垃圾收集器。

运行图

具有以下特点:

持续高吞吐量、高效利用CPU、优先吞吐量、精确控制。

根据相应的特性,我们可以很容易地想到它的使用场景,即:当应用程序运行在多个CPU上并且对时间间隔要求不是特别高时,系统进行最多的计算。在后台

SerialOld是Serial收集器一代的版本。

它具有以下特点:

优点和缺点与Serial大致相同。

CMS(ConcurrentMarkSweep)是一个旨在实现最短回收距离的收集器。使用的算法是“标记”的,操作过程分为四步:

操作图标

它有以下特点:

对于。例如服务器服务器上常见的WEB、B/S系统应用。

ParallelOld是ParallelScavenge收集器的旧版本。它使用许多线程和“标记排序”算法来充分利用多核CPU的计算能力。

它具有以下特点:

优缺点,请参考ParallelScavenge收集器。

这样看来,在注重吞吐量、感受CPU资源的场景下,应用ParallelScavenge(新生代)和ParallelOld收集器(老年代)的组合是“惨不忍睹”的

G1(Garbage-First)JDK7-u4是推出商业收集器的版本。集电器技术的进步。

G1需要特定的内存(具体是存储卡)来记录新生代和老年代内存堆的关系。另外,G1中维护内存的成本较高,带来较高的执行负载,影响效率。

据《深入理解Java虚拟机》作者介绍,CMS在小内存应用中表现优于G1,而G1在大内存应用中则有6GB到8GB的内存优势。

我个人认为G1回收商基本上和cms、并行一样都是被压制的。但如果您不追求最​​终的性能目标,请忽略G1。你基本上可以介绍关于垃圾收集器的许多基本点保持不变。文章如有错误或错误之处,欢迎指出,共同前进!