说明:这篇文章来翻译来自于JavapapersJava Garbage Collection Introduction

在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的。和C语言不一样的是,开发中不需要在Java中写垃圾回收代码。这也是使Java更加流行而且帮助开发中写出更好的Java应用程序的Java特性之一。

下面是关于Java 垃圾回收的基础介绍的四个系列文章。

1.Java垃圾回收介绍

2.Java垃圾回收是如何工作的

3.Java垃圾回收器的类型

4.Java垃圾回收的监控和分析

这篇文章是四个系列指南的第一部分。它将首先解释像JDK、JVM、JRE、HotSpot VM这样的名词,然后介绍JVM架构以及Java堆内存结构。因为在理解Java垃圾回收之前这些是一些了解的基础。

主要的Java名词

  • Java API:帮助开发者创建应用程序封装库的集合

  • 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,但是在被Oracle收购之后,改成了HotSpot JVM。目前,Oracle拥有了这两个JVM的实现,而且他们声称经过一段时间之后他们会把这两个虚拟机的实现整合成一个。

HotSpot JVM已经作为了Oracle SE平台的核心组件的一部分。在这个垃圾回收指南中,我们将看到基于HotSpot虚拟机的垃圾回收机制。

JVM 架构

下面的这张图包含了在一个JVM中的核心组件。在一个JVM架构中,和垃圾回收相关的两个主要组件是堆内存和垃圾回收器。堆内存是运行时数据区,就是实例存放的地方并且由垃圾回收器来来管理。现在我们就来了解这些东西是如何在更大的设计中相适应的。

Java堆内存

理解对内存在JVM内存模型中角色是很有必要的。在运行时Java实例被存储在堆内存区。当一个对象不再被其他对象所引用的时候,它将会被从堆内存中回收。在垃圾回收进程中,这些对象被从堆内存中回收而且空间被释放。堆内存只要有三个主要的区域:

  • 1.年轻代(Young Generation)

    • 1.Eden Space(任何进入运行时内存都会经过Eden区)
    • 2.S0 Surivior Sapce(从Eden移到S0的实例对象)
    • 3.S1 Surivior Sapce(从S0移到S1的更老实例对象)
  • 2.老年代(Old Generation ,从S1到的区域)
  • 3.永久代(Permanent Generation,包含像类、方法详情的元数据信息)

更新:永久代(Permgen)区已经从Java SE8 功能被移除了

[译]Java 垃圾回收介绍的更多相关文章

  1. Java垃圾回收介绍(译)

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

  2. [译]Java垃圾回收是如何工作的

    说明:这篇文章来翻译来自于Javapapers 的How Java Garbage Collection Works 这部分教程是为了理解Java垃圾回收的基础以及它是如何工作的.这是垃圾回收系列教程 ...

  3. [译]Java 垃圾回收的监控和分析

    说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Monitoring and Analysi 在这个系列的Java垃圾回收教程中,我们将看到可用于垃圾 ...

  4. Java GC系列(2):Java垃圾回收是如何工作的?

    本文由 ImportNew - 伍翀 翻译自 javapapers. 目录 垃圾回收介绍 垃圾回收是如何工作的? 垃圾回收的类别 垃圾回收监视和分析 本教程是为了理解基本的Java垃圾回收以及它是如何 ...

  5. Java垃圾回收是如何工作的?

    本教程是为了理解基本的Java垃圾回收以及它是如何工作的.这是垃圾回收教程系列的第二部分.希望你已经读过了第一部分:<Java 垃圾回收介绍>. Java 垃圾回收是一项自动化的过程,用来 ...

  6. [译]GC专家系列2:Java 垃圾回收的监控

    原文链接:http://www.cubrid.org/blog/dev-platform/how-to-monitor-java-garbage-collection/ 这是"成为GC专家系 ...

  7. 【转载】Java垃圾回收机制

    原文地址:http://www.importnew.com/19085.html Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联 ...

  8. Java GC系列(1):Java垃圾回收简介

    本文由 ImportNew - 好好先生 翻译自 javapapers. Java的内存分配与回收全部由JVM垃圾回收进程自动完成.与C语言不同,Java开发者不需要自己编写代码实现垃圾回收.这是Ja ...

  9. [牛感悟系列]JAVA(1)理解JAVA垃圾回收

    理解JAVA垃圾回收的好处是什么?满足求知欲是一方面,编写更好的JAVA应用是另外一方面. 如果一个人对垃圾回收过程感兴趣,那表明他在应用程序开发领域有相当程度的经验.如果一个人在思考如何选择正确的垃 ...

随机推荐

  1. mousewheel 与 DOMMouseScroll

    FF使用DOMMouseScroll,其他浏览器使用mousewheel FF在一个特殊的属性event.detail.表示滚动的值 event.detail 正数:向下滚动,负数:向上滚动 滚动一次 ...

  2. SQL Server BCP使用小结

    原文:SQL Server BCP使用小结 用法: bcp {dbtable )   );GO--输出XML格式化文件--说明一下:-t","是指定字段分隔符,稍后我们会讲到exe ...

  3. struts1吊牌&lt;logic:iterate&gt;

    <logic:iterate>主要用于处理网页上的输出集合,集合是其中一般下列之一: 1. java对象的数组 2. ArrayList.Vector.HashMap等 具体使用方法请參考 ...

  4. GitBook 配置说明

    1. 下载并安装 npm node-v0.12.0.pkg http://nodejs.org/download/ 2. 安装 gitbook $ sudo npm install gitbook-c ...

  5. Eclipse-----jrebel实现jetty热部署

    步骤1:下载jrebel将文件解压缩到任意文件夹 步骤2:配置jetty watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVrZXdhbmd6aQ==/f ...

  6. 编程获取linuxservercpu、内存和磁盘使用

    proc文件系统简介 /proc文件系统是一个伪文件系统.它是唯一的,其中存储器,如果不采取外部存储空间. 它是文件系统提供了与内核进程进行通信的接口的方法.用程序能够通过/proc得到系统的信息.并 ...

  7. 基于NSIS脚本开发的安装程序制作软件:易量安装

    原文 基于NSIS脚本开发的安装程序制作软件:易量安装 前几天“萝卜”给我推荐了一款安装程序制作工具——易量安装. 易量安装是一款安装程序制作软件,基于著名的NSIS(Nullsoft Scripta ...

  8. 【MongoDB】Serveral common command of MongoDb

    In the recent days, since the overwork made me exhaused, on arrival to home I will go to bed, which ...

  9. requirejs实现模块化

    使用requirejs实现模块化编程 > 序言 - -# 公司大了,业务多了,前端代码量也逐渐增大,我们渐渐的依赖js实现的交互越来越多,长期以来会导致我们的代码维护越来越困难,所以依赖的插件也 ...

  10. SQL Server 备份和还原全攻略

    原文:SQL Server 备份和还原全攻略 一.知识点 完全备份: 备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件.(在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份, ...