• 35648

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

Java垃圾回收(1):入门

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/ITjs/2019/0611/632.html 在Java,内存空间的分配和回收都是有Java虚拟机的垃圾回收进程自动完成的。这点和C语言不同,在Java中,不需要开发人员专门垃圾回收相关的代码。这是使Java流行起来的众多原因之一,并且帮助开发人员写出了更好的Java应用。

接下来,将通过四篇文章来介绍Java垃圾回收的一些基础知识。

  1. Java垃圾回收入门
  2. Java垃圾回收的工作原理
  3. 常见的四种Java垃圾收集器
  4. Java垃圾回收的监控与分析

本文是该系列的第一篇文章。将介绍几个基本的专业术语,例如JDK、Java虚拟机(JVM)、JRE、HotSpot虚拟机,接着将说明一下Java虚拟机的架构和Java堆的内存结构。在阅读本系列文章之前,理解这些基本知识是非常重要的。

关键术语

  • Java API – 这是一个打包好的类库集合,可以帮助开发人员更快、更好地开发Java应用。
  • JDK(Java开发工具) – 一系列可以让开发人员开发Java应用的工具。JDK包含了可以编译、运行、打包、分发以及监控Java应用的工具。
  • Java虚拟机(JVM) – Java虚拟机是一个抽象的计算机。编写Java应用需要遵循Java虚拟机规范。Java虚拟机来应对具体的操作系统,它将Java指令转化成更底层的操作系统指令,然后执行他们。Java虚拟机可以实现Java应用的平台无关性。
  • JRE – JRE包含Java虚拟机的实现和Java API。

HotSpot虚拟机

每一个Java虚拟机在垃圾回收概念的实现方式上都有可能不同。在Oracle收购SUN之前,Oracle已经拥有了JRockit虚拟机,收购SUN之后,又从SUN那里获得了HotSpot虚拟机。现在,Oracle维护这两个Java虚拟机,并且Oracle已经发布声明,将来会将这两个虚拟机合二为一。

HotSpot虚拟机作为Oracle SE平台的核心组件,有很高的研究价值。在这个Java垃圾回收系列文章里,我们重点研究基于HotSpot虚拟机的垃圾回收概念。

Java虚拟机架构

下面的这张图总结了Java虚拟机中的关键组件。在Java虚拟机架构中,有和两个组件和垃圾回收关系密切,就是堆内存(heap memory)和垃圾收集器(Garbage Collector)。堆内存是用于存储实例的运行时数据区(Runtime data area),而垃圾收集器正好也作用此。现在,我们知道,从一个更高层次上来看,这些组件是如何运作的。

HotSpot虚拟机架构

Java堆内存结构

重要的是要理解堆内存在Java虚拟机内存模型所扮演的角色。在运行时,Java实例存储在堆内存中。当一个实例不再被任何对象引用时,将有可能从堆内存中被回收。在垃圾回收时,这些对象将从堆内存中被回收,内存空间被释放。堆内存中主要有三大区域:

  1. 新生代(Young Generation)
    1. Eden Space:对象创建到运行时内存区域。
    2. S0 Survivor:老的实例从Eden Space移动到这里
    3. S1 Survivor:老的实例从S0移动到S1
  2. 老年代(Old Generation):实例从S1躲过垃圾回收晋级到老年代
  3. 永久代(Permanent Generation):包含一些元信息,例如类(class)、方法详情

Java堆内存结构

注意:永久代已经在Java SE 8中被移除

在下一篇文章中,我们将看看Java垃圾回收到底是如何工作的?

原文链接:Java Garbage Collection Introduction



相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!