首先,目前主流的JVM实现中都采用了分代收集的算法,我们常常听到的新生代,老年代就是基于这个算法。
新生代:存放那些朝生夕死的对象
老年代:存放存活时间超过指定数值的对象
还有永久代,也就是方法区。存放了类结构,静态数据等,此区域JVM规范中并不要求回收。
1,标记-清除算法
原理:通过可达性分析标记无效对象,然后清除。
问题:产生大量内存碎片,碎片过多时,导致内存不够,提前触发GC
2,复制算法(适合新生代朝生夕死的特点)
原理:将堆分为两个区域A,B。分配对象时,在A区域分配,A不够分配时,将A中有效的对象转移到B中,然后清除A。接下来分配对象到B,B不够分配时,将有效对象转移到A中,如此反复。
问题:空间效率太低
解决:将堆分为一个eden区域,两个survivor区域。把eden和其中一个survivor看作原理中的A,另一个survivor看作B。转换时,把有效对象从eden和survivor中转移到另一个survivor中,然后在此survivor和eden中分配对象,如此反复。目前eden:survivor = 8:1
3,标记-整理算法
原理:同标记-清除算法类似,标记后,将可用的对象移动到一边,清除边界意外的其他对象。
分享到:
相关推荐
JVM与GC调优课程视频 〖课程介绍〗: JVM与GC调优课程视频 〖课程目录〗: 1.笔记/ ├── 第1篇-字节码篇.png?x-oss-process=style/pnp8 ├── 第2篇-类的加载篇.png?x-oss-process=style/pnp8 ├── 第3篇-运行时...
这个压缩包“JAVA-JVM-全面/发展史/GC.zip”显然包含了关于Java、JVM、垃圾回收(GC)及其历史的深入学习资料,特别是通过“JAVA-笔记.pdf”这样的文档形式。 Java的发展史可以追溯到1991年,由Sun Microsystems的...
- **标记-压缩算法**(Mark-Compact):标记过程同标记-清除算法,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。解决了标记-清除算法中的碎片问题...
二、JVM内存回收机制 1. **堆内存**:所有对象都在堆内存中分配,包括实例变量和数组。Java的垃圾回收主要关注堆内存的管理。 2. **垃圾回收算法**: - **标记-清除(Mark-Sweep)**:首先标记出所有活动对象,...
### JVM学习笔记(一) #### 一、JVM概述与工具使用 JVM(Java Virtual Machine)是Java语言的核心组成部分之一,它为Java程序提供了一个跨平台的运行环境。本篇学习笔记主要介绍如何利用一系列工具来查看和监控JVM...
### JVM学习笔记 #### JVM内存模型 (JMM) JVM内存模型主要分为以下几个部分: - **Java堆**:这是所有线程共享的一块区域,在虚拟机启动时创建。主要用于存放对象实例,几乎所有的对象实例都在这里分配内存。 - *...
《JVM调优笔记》 Java虚拟机(JVM)是Java编程语言的核心组成部分,它负责执行字节码,管理内存,以及优化程序性能。JVM调优是提高Java应用程序性能的关键步骤,涉及到多个方面,包括堆内存设置、垃圾收集器选择、...
大厂架构师-日均百万订单量的JVM优化与高级GC调优策略实战(5.8G) 〖课程介绍〗: 来自顶尖大厂的架构师级JVM优化与GC调优策略实战课程,是具备有尖端技术的优化课程。在课程内容上几乎不用过多的介绍,单是查阅目录就...
- **GC目标**:回收无用的对象,避免内存泄露。 - **GC类型**: Minor GC(新生代GC)、Major GC(老年代GC)、Full GC。 - **GC算法**:标记-清除、复制、标记-整理、分代收集等。 - **垃圾收集器**:Serial、...
这份资料出自B站上的【狂神说Java】系列教程,为快速入门JVM提供了详实的笔记。以下是根据这些资源可能包含的一些关键知识点的详细解析: 1. **JVM概述**: - JVM是Java平台的核心组成部分,它是一个运行Java字节...
2. **堆(Heap)**:所有对象实例和数组都存储在这里,是JVM中最大的一块内存区域,被所有线程共享。 3. **栈(Stack)**:每个线程都有一个独立的栈,用于存储局部变量表、操作数栈、动态链接和方法出口等信息。 4....
【标题】:“6.1.5.JVM终结篇笔记1”主要探讨了JVM的深入理解和垃圾收集(GC)优化,包括GC发生时机、实验环境准备、GC日志及其分析。 【描述】:本笔记首先从宏观角度重新认识JVM,强调了JVM的物理结构,特别是...
JVM的垃圾收集机制负责自动回收不再使用的对象所占用的内存,主要有标记-清除、复制、标记-整理和分代收集等算法。理解垃圾收集的工作原理,可以帮助我们设置合理的内存参数,避免Full GC的发生,提高应用的响应速度...
GC的目标是自动回收不再使用的对象,释放内存。不同的垃圾收集器如Serial、Parallel、Concurrent Mark Sweep (CMS) 和 G1,有不同的工作策略和性能特点。 JVM内存调优包括设置合适的堆大小、新生代与老年代的比例、...
这个资料包不仅涵盖了理论知识,还包含个人的学习笔记,对于学习和掌握JVM的各个方面都将大有裨益。无论是初学者还是经验丰富的开发者,都可以从中找到提升自己技能的宝贵资源。通过深入学习和实践,可以更好地理解...
本文将根据"JVM性能学习笔记思维导图"的主题,详细阐述JVM的主要组成部分,性能调优的关键点以及相关的工具与实践策略。** 1. **JVM结构与内存模型** - **类装载器(ClassLoader)**:负责加载类文件,确保类在运行...
垃圾回收(GC,Garbage Collection)是JVM自动进行内存管理的重要机制,它的目标是回收不再使用的对象所占用的内存空间。GC的主要任务是识别并清理无引用的对象,防止内存泄漏。Java提供了多种垃圾收集算法,如标记-...
在JVM的执行过程中,类加载器(Class Loader)负责将.class文件中的二进制数据读入内存中,将其转换为方法区内的运行时数据结构,并在堆中生成一个java.lang.Class对象,作为对方法区中数据的访问入口。类加载的过程...
Java虚拟机(JVM)是Java平台的核心组成部分,它负责运行Java程序,并提供了内存管理、垃圾回收以及类加载等关键功能。JVM的学习可以从其基本结构、代码编译和执行过程,以及内存管理和垃圾回收机制三个方面进行深入...