细述 Java垃圾回收机制→Java Garbage Collection Introduction

简介:

计划写一个介绍Java垃圾回收基础的系列文章,共分四部分:

  1. Java垃圾回收简介
  2. Java垃圾回收器是如何工作的?
  3. 各种类型的Java垃圾回收器
  4. Java垃圾回收的监控和分析

本文是这个系列的第一篇文章,这篇文章将会介绍一些基本术语,如:JDK,JVM,JRE,HotSpot VM,以及理解JVM的架构和Java堆内存结构。在开始学习Java垃圾回收机制之前确实有必要了解一下这些基本东西。

关键的Java术语

  • Java API–一个帮助程序员创建Java应用的打包好的库集合
  • Java Development Kit(JDK)–一个使得程序员能够开发Java应用的工具集合
  • Java Virtual Machine(JVM)–JVM是一个抽象的计算机。Java程序是针对JVM规范写的。JVM是根据不同的操作系统平台实现的,它将Java指令翻译成对应平台上的指令,并执行。这样Java程序能够达到平台独立性。
  • Java Runtime Environment(JRE)–JRE由一个JVM的实现和Java API组成。

Java HotSpot虚拟机

每个JVM的实现在对垃圾回收的原理的实现方式上会有一些不同。在收购SUN之前Oracle有JRockit JVM,收购SUN之后有了HotSpot虚拟机。目前Oracle同时维护了这两个虚拟机,并宣称将来会将两个虚拟机合并。

HotSpot虚拟机是Oracle标准版平台的核心组成部分。在本垃圾回收系列文章中我们将通过HotSpot虚拟机来了解垃圾回收的基本准则。

JVM 架构

下面的这幅图概括了一个JVM中的主要组成。在JVM架构中,堆内存和垃圾回收器这两个部分和垃圾回收相关。堆内存是运行时用来存储实例对象的数据空间,垃圾回收器运行在堆内存上。现在我们大概知道它们是怎样的一个工作模式。

Java 堆内存

在Java的内存模型中,最重要的是要了解堆内存的概念。运行时的Java实例对象存储在堆内存空间中。当一个对象不再被引用了,它变成可被从堆内存中回收空间。在垃圾回收的过程中,这些对象将被从堆内存中清除,同时它们的空间也就被回收了。堆内存的空间主要分成了三部分,

  1. 年轻代
    a, Eden区(所有实例在运行时最初都分配到eden区中)
  2. b, S0 Survivor Space(老一些的对象被从eden区移动到S0区,其实是eden区中的对象经过一次对eden区的Young GC还存活的对象被移动到S0)
    c, S1 Survivor Space(再老一些的对象被从S0区移动到S1区,其实是在Young GC过程中S0区已满,则会将eden区中还存活的对象和S0区中的存活对象移动到S1区中)
  3. 老年代(经过S0,S1中几轮迭代后还存活的对象被提升到老年代)
  4. 永久代(包含一些元数据像类、方法等等

永久代空间在Java SE8特性中已经被移除


作者:anonymoussf

来源:51CTO

相关文章
|
监控 算法 Java
Java虚拟机(JVM)垃圾回收机制深度剖析与优化策略####
本文作为一篇技术性文章,深入探讨了Java虚拟机(JVM)中垃圾回收的工作原理,详细分析了标记-清除、复制算法、标记-压缩及分代收集等主流垃圾回收算法的特点和适用场景。通过实际案例,展示了不同GC(Garbage Collector)算法在应用中的表现差异,并针对大型应用提出了一系列优化策略,包括选择合适的GC算法、调整堆内存大小、并行与并发GC调优等,旨在帮助开发者更好地理解和优化Java应用的性能。 ####
417 27
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
401 4
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####
|
存储 监控 算法
Java内存管理的艺术:深入理解垃圾回收机制####
本文将引领读者探索Java虚拟机(JVM)中垃圾回收的奥秘,解析其背后的算法原理,通过实例揭示调优策略,旨在提升Java开发者对内存管理能力的认知,优化应用程序性能。 ####
236 0
|
存储 Java 测试技术
滚雪球学Java(56):探究Java中Collection接口,理解集合框架的实现原理
【6月更文挑战第10天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
210 2
滚雪球学Java(56):探究Java中Collection接口,理解集合框架的实现原理
|
存储 Java 索引
从零开始学习 Java:简单易懂的入门指南之Collection集合及list集合(二十一)
从零开始学习 Java:简单易懂的入门指南之Collection集合及list集合(二十一)
【零基础学Java】—Collection集合(三十八)
【零基础学Java】—Collection集合(三十八)
|
存储 Java API
Java中的Collection集合
集合是java中提供的一种容器,可以用来存储多个数据。
258 1
|
存储 Java 索引
Java之Collection集合的详细解析
Java之Collection集合的详细解析
194 0
|
存储 Java 索引
Java开发——22.Collection单列集合+迭代器+增强for循环
集合,是Java提供的一种容器,可以用来存储多个数据,并且可以存储任意类型
Java开发——22.Collection单列集合+迭代器+增强for循环
下一篇
开通oss服务