JVM中怎么解析JVM分代垃圾回收策略

技术JVM中怎么解析JVM分代垃圾回收策略这篇文章将为大家详细讲解有关JVM中怎么解析JVM分代垃圾回收策略,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。由于不同对象的生

本文将详细解释如何在JVM中分析JVM生成的垃圾收集策略。这篇文章的内容质量很高,我就分享给大家作为参考。希望你看完这篇文章后有所了解。

由于不同对象的生命周期不同,在JVM的垃圾收集策略中有一个生成策略。

JVM分代垃圾回收策略的基础概念

为什么要分代

JVM生成的垃圾收集策略是基于不同对象的生命周期不同这一事实。因此,不同生命周期的物体可以采用不同的收集方式,以提高回收效率。

在运行Java程序的过程中,会产生大量的对象,其中一些对象与业务信息相关,比如Http请求中的Session对象、线程、Socket连接等,这些对象与业务直接挂钩,因此它们的生命周期相对较长。但是仍然有一些对象,主要是程序运行过程中产生的临时变量,它们的生命周期会比较短。比如String对象,由于其不变的类特性,系统会产生大量这样的对象,有些对象甚至可以回收一次。

想象一下,在不区分对象生命周期的情况下,每次垃圾收集都会回收整个堆空间,这需要相对较长的时间。同时,由于每次都需要遍历所有幸存的对象,实际上对于生命周期长的对象来说,这种遍历是无效的,因为它可能已经被遍历了很多次,但它们仍然存在。因此,世代垃圾收集采用分而治之的思想,分世代,将生命周期不同的对象放在不同的世代上,采用最适合的垃圾收集方式在不同的世代进行回收。

如何分代

如图所示:

JVM中怎么解析JVM分代垃圾回收策略

虚拟机分为三代:年轻一代、老一代和永久一代。持久化生成主要存储Java类的类信息,与垃圾收集要收集的Java对象关系不大。年轻一代和老一代的划分对垃圾收集有很大的影响。

年轻代:

所有新生成的对象都首先放在年轻一代中。年轻一代的目标是尽快收集那些生命周期短的物品。年轻一代分为三个区。一个伊甸园区域和两个幸存者区域(一般来说)。大多数对象都是在伊甸园区域生成的。当伊甸园区域满了,幸存的对象将被复制到幸存者区域(两者之一);当这个幸存者区域被填满时,这个区域中幸存的对象将被复制到另一个幸存者区域;当此幸存者区域已满时,从* * *幸存者区域复制的幸存对象将被复制到“终身旧区域”。需要注意的是,《幸存者》的两个区域是对称的,没有顺序关系,所以同一区域可能既有从伊甸园复制的对象,也有从上一个《幸存者》复制的对象,但只有当年旧区域* * *幸存者复制的对象。此外,总是有一个空的幸存者区域。同时,根据节目的需要,Survivor区域可以配置为多个(两个以上),这样可以增加对象在年轻一代的存在时间,减少被放置在老一代的可能性。

年老代:

年轻一代垃圾收集n次存活下来的人,会被放到老一辈。因此,可以认为老一代存储的所有对象都有很长的生命周期。

持久代:

用来存储静态文件,现在是Java类、方法等。持久化生成对垃圾收集没有显著影响,但有些应用程序可能会动态生成或调用一些类,如Hibernate等。在这种情况下,需要设置一个相对较大的持久生成空间来存储运行过程中新添加的这些类。持久生成大小由-XX:MaxPermSize=设置。

什么情况下触发JVM分代垃圾回收

因为对象是分代处理的,所以垃圾收集的区域和时间是不同的。GC有两种类型:清除GC和完全GC。

ScavengeGC

一般来说,当一个新的对象生成,并且在伊甸园中的空间申请失败时,它会触发清除GC,在伊甸园区域执行GC,清除非生物对象,并将幸存的对象移动到幸存者区域。然后组织幸存者的两个区域。这样的GC是在年轻一代的伊甸园地区进行的,不会影响到老一辈。因为大部分对象都是从伊甸园区域开始的,而伊甸园区域不会被分配太多,所以伊甸园区域的GC会频繁进行。因此,这里一般需要使用快速高效的算法,让伊甸园尽快闲置。

FullGC

整理整个堆,包括年轻,拉伸和烫发。FullGC比cleave GC慢,因为它需要回收整个对,所以应该尽可能减少FullGC的数量。在调优JVM的过程中,很大一部分工作是调整FullGC。FullGC可能由以下原因引起:

老年一代(终身职位)已满。

烫发写满。

显示并调用System.gc()。

上次GC后,Heap的各个域分配策略动态变化。

如何分析JVM中JVM生成的垃圾收集策略,希望在此分享。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/44229.html

(0)

相关推荐

  • 英文大小写26个字母,二十六个字母大小写及音标是

    技术英文大小写26个字母,二十六个字母大小写及音标是一英文大小写26个字母、26个英文字母的大写字母 A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、P、Q、R、S、T、U、V、W、X、Y、Z。
    二、26个

    生活 2021年10月24日
  • INTERVAL DAY TO SECOND数据类型是怎样的呢

    技术INTERVAL DAY TO SECOND数据类型是怎样的呢这篇文章给大家介绍INTERVAL DAY TO SECOND数据类型是怎样的呢,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。INT

    攻略 2021年11月30日
  • 塑料三角烧瓶,三角烧瓶和三角瓶的区别

    技术塑料三角烧瓶,三角烧瓶和三角瓶的区别一塑料三角烧瓶、应用领域区别:1、三角瓶多用于生物培育菌种实验,有盖。2、三角烧瓶即锥形瓶是化学实验中常见仪器,多无盖,可加热,用于化学实验。
    二、外形区别:
    3、锥形瓶一般来说

    生活 2021年10月26日
  • mysql出现乱码怎么解决(mysql数据乱码怎么解决)

    技术mysql中jsp乱码怎么办这篇文章主要介绍mysql中jsp乱码怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! mysql jsp乱码的解决办法:1、使用“

    攻略 2021年12月16日
  • 水浒传每回概括200字,水浒传44章概括,200字)

    技术水浒传每回概括200字,水浒传44章概括,200字)●第四十四回 锦豹子小径逢戴宗 病关索长街遇石秀 话说公孙胜与水浒好汉约定的期限已到却迟迟未归水浒传每回概括200字,晁盖、宋江、吴用派戴宗往蓟州探望公孙胜,中途遇

    生活 2021年10月20日
  • 在Eclipse下如何安装C++插件CDT

    技术在Eclipse下如何安装C++插件CDT小编给大家分享一下在Eclipse下如何安装C++插件CDT,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了

    攻略 2021年11月25日