说明:这篇文章来翻译来自于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. C#+Mapxtreme 实现一些GIS系统基本的功能

    此程序包括了mapxtreme地图相关基本功能的演示其中包括 鹰眼地图,图层控制,发达,缩小,平移地图,地图模糊查询,中点工具,距离测量工具,面积测量工具,图元信息查看工具.适合于企业级开发,可以为您 ...

  2. adp设备是什么

    今天在写软工文档的可行性分析部分的时候.遇到一个新名词--adp,瞬间就不淡定了.原话例如以下: 6.1.1 基本建设投资 包含採购.开发和安装下列各项所需的费用,如: a. 须要提供一件教室,供开发 ...

  3. LinkedBlockingQueue的put,add跟offer的区别(转)

    LinkedBlockingQueue的put,add和offer的区别 最近在学习<<Java并发编程实践>>,有很多java.util.concurrent包下的新类.Li ...

  4. centos7 高速安装 mariadb(mysql)

    从最新版本的linux该系统启动,缺省值是 Mariadb代替mysql! 使用系统自带repos安装非常easy: yum install mariadb mariadb-server system ...

  5. 7 Ways to earn money on programming(转)

    英文原文:7 Ways to earn money on programming 几个星期前,当我收到一个自称 Someone712 的人发给我的一条消息时,我决定要写一篇如何用编程赚钱的博客文章.S ...

  6. atitit.提升稳定性---hibernate 添加重试retry 机制解决数据库连接关闭

    atitit.提升稳定性---hibernate 添加重试retry 机制解决数据库连接关闭 1. 流程总结 retry(5times).invoke(xxx).test().rest().$() t ...

  7. Thinkpad E431 解决无线网卡无法开启

    Thinkpad E431无线网卡无法开启 现象再现: Thinkpad E431新机,原装win8系统,使用win7光盘换为win7系统,官方下载驱动程序,安装后无线上网正常. 点击功能软件Acce ...

  8. 值得关注的10个python语言博客(转)

    大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建立这个博客的原因,向大家分享我自己学到的新知识.今天我向大家推荐10个值得我们关注 ...

  9. Javascript学习7 - 脚本化浏览器窗口

    原文:Javascript学习7 - 脚本化浏览器窗口 本节讨论了文档对象模型.客户端Javascript下Window中的各项属性,包括计时器.Location对象.Histroy对象.窗口.浏览器 ...

  10. bigdata_hadoop集群配置_内存分配

    haoop集群  做好内存管理跟重要,不然经常会给抛出个 OutMemory   ,内存溢出 以horntonworks给出推荐配置为样本,给出一种常见的Hadoop集群上各组件的内存分配方案.配置时 ...