zoukankan      html  css  js  c++  java
  • Java垃圾回收介绍(译)

    在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的。与C语言不同的是,在Java中开发者不需要专门为垃圾回收写代码。这是使Java流行的众多特征之一,也帮助了程序员写出了更好的Java应用。

    这是一个四部分的系列教程,以了解在Java中垃圾回收的基础,

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

    这篇教程是系列中的第一部分。本篇中会解释一些基本术语,像JDK,JVM,JRE,HotSpot VM,然后去理解JVM的架构和Java堆内存结构。在进入垃圾回收教程之前,理解这些基础的东西很重要。

    关键Java名词术语

    • Java API –是打包好库的集合,可以帮助开发者创建Java应用程序
    • Java Development Kit (JDK) – 是一个工具集,可以使开发者创建Java应用程序。JDK包括编译、运行、打包、发布和监控Java应用程序的工具。
    • Java Virtual Machine (JVM) – JVM是一个抽象的计算机器。Java程序根据JVM规范来编写。JVM是针对特定平台的,它将JAVA程序翻译成底层平台特定的指令去执行。JVM使得Java程序具有平台独立性。
    • Java Runtime Environment (JRE) – JRE由JVM实现和JAVA API组成。

    Java HotSpot 虚拟机

    每一个JVM实现可能在垃圾回收原则实现的方式上有所不同。在收购SUN之前,Oracle公司已经了又JRockit JVM,收购之后,又有了HotSpot JVM。现在Oracle同时维护两个JVM实现,Oracle也已声明,在经过一段时间后,这两个JVM实现会被整合成一个。

    HotSpot JVM是作为Oracle SE平台部分的一个核心部件。在这个垃圾回收教程中,我们会看到基于HotSpot虚拟机的垃圾回收原则。

    JVM 架构

    下图概述了一个JVM中的关键部件。在JVM架构中,与垃圾回收相关的两个主要部件是堆内存和垃圾回收器。堆内存是运行时数据区域,实例会被存在这,垃圾回收器也在该区域操作。

    现在我们知道这些东西是如何适应更大的计划。

    JVM-Architecture

    Java堆内存 Heap Memory

    理解在JVM内存模型中堆内存作用很重要。在运行时Java实例存放在堆内存区域。当一个对象不再被引用时,它有机会从堆内存中删除。在垃圾回收进程中,那些对象从堆内存中被去除,空间被回收。堆内存有三个区域,

    1. 年轻代Young Generation
      1. Eden区(任一实例进入运行时内存区)
      2. S0幸存区 (久一点的实例从eden区转移到S0)
      3. S1幸存区 (久一点的实例从S0区转移到S1)
    2. 年老代(实例从S1晋升)
    3. 持久代(包含元信息像类、方法细节)

    Java-Heap-Memory

    更新:持久代(PermGen)区从Java SE 8 特征中被移除了。

    在下一个部分中我们会看到关于在Java中垃圾回收是如何工作的

    查看原文

  • 相关阅读:
    Python语言基础03-分支和循环结构
    Python语言基础01-初识Python
    李宏毅深度学习笔记08---Bert、ELMO、GPT
    李宏毅深度学习笔记07---Transformer
    李宏毅深度学习笔记06---word embedding(词嵌入也称词向量)
    李宏毅深度学习笔记05---RNN 循环神经网络02
    李宏毅深度学习笔记04---RNN 循环神经网络01
    李宏毅深度学习笔记03---CNN 卷积神经网络
    李宏毅深度学习笔记02---深度学习的发展历程、3大研究步骤、
    李宏毅深度学习笔记---课程介绍
  • 原文地址:https://www.cnblogs.com/jadic/p/4049456.html
Copyright © 2011-2022 走看看