简单介绍Java垃圾回收机制

  

Java的内存分配与回收全部由JVM垃圾回收进程自动完成。与C语言不同,Java开发者不需要自己编写代码实现垃圾回收。这是Java深受大家欢迎的众多特性之一,能够帮助程序员更好地编写Java程序。

  

这篇教程是系列第一部分,首先会解释基本的术语,比如JDK, JVM, JRE和HotSpotVM。接着会介绍JVM结构和Java堆内存结构。理解这些基础对于理解后面的垃圾回收知识很重要。

  

<强> Java关键术语

  

JavaAPI:一系列帮助开发者创建Java应用程序的封装好的库。

  

Java开发工具包(JDK):一系列工具帮助开发者创建Java应用程序.JDK包含工具编译,运行,打包,分发和监视Java应用程序。

  

Java虚拟机(JVM): JVM是一个抽象的计算机结构. Java程序根据JVM的特性编写.JVM针对特定于操作系统并且可以将Java指令翻译成底层系统的指令并执行.JVM确保了Java的平台无关性。

  

Java运行环境(JRE): JRE包含JVM实现和JavaAPI。

  

<强> JavaHotSpot虚拟机

  

每种JVM实现可能采用不同的方法实现垃圾回收机制。在收购太阳之前,甲骨文使用的是JRockitJVM,收购之后使用HotSpotJVM。目前甲骨文拥有两种JVM实现并且一段时间后两个JVM实现会合二为一。

  

HotSpotJVM是目前OracleSE平台标准核心组件的一部分。在这篇垃圾回收教程中,我们将会了解基于热点虚拟机的垃圾回收原则。

  

<强> JVM体系结构

  

下面图片总结了JVM的关键组件。在JVM体系结构中,与垃圾回收相关的两个主要组件是堆内存和垃圾回收器。堆内存是内存数据区,用来保存运行时的对象实例。垃圾回收器也会在这里操作。现在我们知道这些组件是如何在框架中工作的。

  

简单介绍Java垃圾回收机制

  

  

我们有必要了解堆内存在JVM内存模型的角色。在运行时,Java的实例被存放在堆内存区域。当一个对象不再被引用时,满足条件就会从堆内存移除。在垃圾回收进程中,这些对象将会从堆内存移除并且内存空间被回收。堆内存以下三个主要区域:

  

新生代(YoungGeneration)

  

伊甸园空间(Edenspace任何实例都通过伊甸园空间进入运行时内存区域)

  

S0Survivor空间(S0Survivorspace存在时间长的实例将会从伊甸园空间移动到S0Survivor空间)

  

S1Survivor空间(存在时间更长的实例将会从S0Survivor空间移动到S1Survivor空间)

  

老年代(OldGeneration)实例将从S1提升到终身(终身代)

  

永久代(PermanentGeneration)包含类,方法等细节的元信息

  

简单介绍Java垃圾回收机制

  

永久代空间在Java8特性中已经被移除。

  

  

以上就是本文关于简单介绍Java垃圾回收机制的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

简单介绍Java垃圾回收机制