一、垃圾回收的算法
1、引用记数法 记录对像的引用数量
2、标记-清除算法 会产生空间碎片
3、复制算法 需要使用两块大小相同的内存,应用于新生代
4、标记压缩算法 将所有存活对像压缩到内存的一端,再清理边界外所有空间,应用于老年代
二、垃圾回收的类型
1、新生代串行收集器 特点:独占、单线程、串行,复制算法
2、老年代串行收集器 特点:独占、单线程、串行,标记-压缩算法
3、新生代并行收集器 特点:独占、多线程、并行,复制算法,关注系统吞吐量
4、老年代并行收集器 特点:独占、多线程、并行,标记-压缩算法,关注系统吞吐量
5、CMS(并发标记清除)收集器 特点:非独占、多线程,标记-清除算法
工作步骤:初始标记(独占)、并发标记、重新标记(独占)、并发清理、并发重置
CMS收集器执行过程中,出现内存不足会导致回收失败,这时JVM会启动老年代串行收集器回收
三、垃圾回收调优参数
1、串行GC调优参数
-XX:+UseSerialGC:新生代和老年代使用串行收集器
-XX:SurvivorRatio:设置eden区和survivor区大小的比例
-XX:PretenureSizeThreshold:设置大对像直接进入老年代的对像大小阈值
-XX:MaxTenuringThreshold:设置对像进行老年代的年龄阈值
2、并行GC调优参数
-XX:+UseParNewGC:新生代使用并行收集器
-XX:+UseParallelOldGC:老年代使用并行收集器
-XX:ParallelGCThreads:设置用于垃圾回收的线程数,通常和CPU数量相等
-XX:MaxGCPauseMillis:设置最大垃圾收集停顿时间
-XX:GCTimeRatio:设置吞吐量的大小,是一个0~100的整数
-XX:+UseAdaptivesSizePolicy:打开GC自适应策略
3、CMS调优参数
-XX:+UseConcMarkSweepGC:新生代使用并行收集器,老年代使用CMS+串行收集器
-XX:ParallelCMSThreads:设置用于CMS垃圾回收的线程数
-XX:CMSInitiatingOccupancyFraction:设置CMS收集器在老年代空间被使用多少后触发,默认为68%
-XX:+UseCMSCompactAtFullCollection:设置CMS收集器在完成垃圾回收后是否要进行一次内存碎片整理
-XX:CMSFullGCsBeforeCompaction:设置进行多少次CMS垃圾回收后,进行一次内存压缩
-XX:+CMSClassUnloadingEnabled:允许对类元数据进行回收
-XX:+CMSParallelRemarkEnabled:启用并重新标记
相关推荐
自己学习总结JVM垃圾回收机制的结构图,一起分享!!!
总结,理解JVM的垃圾回收机制对于优化Java应用程序的性能至关重要。开发者应根据应用的特性和需求,选择合适的垃圾回收器,并通过调整相关参数,以达到最佳的系统性能。同时,编写代码时也要遵循良好的内存管理实践...
Java虚拟机(JVM)的垃圾回收(GC)机制是Java程序高效运行的关键部分,它自动管理内存,释放不再使用的对象以避免内存泄漏。本文主要探讨JVM堆内存的结构和GC的工作原理,以及如何进行性能调优。 JVM堆是Java应用...
Java虚拟机(JVM)是Java程序运行的基础,它的核心组成部分之一就是垃圾回收(Garbage Collection,简称GC)。GC是JVM自动管理内存的主要方式,它负责识别并清理不再使用的对象,以避免内存泄漏和资源浪费。理解并...
《JVM垃圾回收艺术——探索Tenured Generation的内涵》 在深入探讨JVM垃圾回收机制的艺术之前,我们先来理解一下“天才”的定义——一种对事业、对工作的极度热爱。JAVA垃圾回收(GC)同样展现出这种对效率和优化的...
jvm 垃圾回收思维导图,总结了现有的垃圾回收器的有点以及使用场景、垃圾回收算法以及回收的判断依据。
总结来说,JVM的垃圾回收算法有多种,每种都有其适用场景和优缺点。开发者需要根据应用的需求选择合适的垃圾回收策略,以优化内存管理和提升系统性能。理解这些基础的垃圾回收算法有助于我们更好地调试和调优Java...
第四节:垃圾回收算法 1.1标记清除算法 1.2复制算法 1.3 标记整理(标记压缩)算法 第五节:垃圾回收器 1.1Serial/Serial Old收集器 1.2 ParNew收集器 1.3Parallel Scavenge收集器 1.4Parallel Old收集器 1.5CMS...
### JVM工作原理及垃圾回收机制详解 #### 一、JVM概述及原理 **1.1 JVM概述** Java Virtual Machine (JVM),即Java虚拟机,是一种虚构的计算机,在实际的计算机硬件上仿真模拟出的一套完整的计算机系统,用于执行...
自己总结的jvm中内存和垃圾回收的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合jvm的爱好者和学习者
《JVM垃圾回收与调优详解1》 Java虚拟机(JVM)的内存管理和垃圾回收是其性能优化的关键环节。本文主要探讨JVM内存分配、对象回收的判断标准以及垃圾收集算法。 1. JVM内存分配与回收 在JVM中,内存分为新生代、...
JVM 内存分配与垃圾回收详解 Java 虚拟机(JVM)是 Java 语言的 runtime 环境,它提供了一个平台独立的方式来执行 Java 字节码。JVM 内存分配与垃圾回收是 JVM 中两个非常重要的概念,本文将对 JVM 内存分配与垃圾...
【JVM垃圾回收分享】 Java语言的一大亮点是其自动内存管理机制,这使得开发者无需手动管理内存,从而避免了常见的内存泄漏和指针越界问题。这种机制通过垃圾回收(Garbage Collection,简称GC)来实现,确保了程序...
该文档总结了JVM主要的七种垃圾回收器特点与区别,分别描述了他们作用于堆内存的哪些区域,采用单线程还是多线程工作方式,在运行过程中是否需要暂停其他用户工作线程。是笔者对周志明老师的《深入理解java虚拟机》...
总结来说,JVM的垃圾回收器选择和调优是一项复杂的工作,需要根据应用类型、内存大小、响应时间要求等因素综合考虑。理解各种GC的工作原理和特点,结合实际应用进行选择,是提升Java应用性能的关键步骤。在实践中,...
JVM结构+垃圾回收器+锁总结
本篇文章将详细讲解"JVM调优总结(4)分代垃圾回收"这一主题,旨在帮助Java开发者掌握更加高效、稳定的应用运行策略。 一、分代垃圾回收理论基础 Java的内存管理主要依靠垃圾回收机制,它自动回收不再使用的对象,...
垃圾回收是JVM自动进行内存管理的一种机制,其主要目标是回收不再使用的对象所占用的内存空间,以防止内存泄漏。GC分为多个阶段: 1. **标记(Marking)**:确定哪些对象是“活的”,哪些是可回收的。常见的算法有...
此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 * -Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小+年老代大小+持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代...