Java垃圾回收介绍(译)
在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的。与C语言不同的是,在Java中开发者不需要专门为垃圾回收写代码。这是使Java流行的众多特征之一,也帮助了程序员写出了更好的Java应用。
这是一个四部分的系列教程,以了解在Java中垃圾回收的基础,
- Java垃圾回收介绍
- Java垃圾回收如何工作?
- Java垃圾回收器的类型
- 监控和分析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架构中,与垃圾回收相关的两个主要部件是堆内存和垃圾回收器。堆内存是运行时数据区域,实例会被存在这,垃圾回收器也在该区域操作。
现在我们知道这些东西是如何适应更大的计划。

Java堆内存 Heap Memory
理解在JVM内存模型中堆内存作用很重要。在运行时Java实例存放在堆内存区域。当一个对象不再被引用时,它有机会从堆内存中删除。在垃圾回收进程中,那些对象从堆内存中被去除,空间被回收。堆内存有三个区域,
- 年轻代Young Generation
- Eden区(任一实例进入运行时内存区)
- S0幸存区 (久一点的实例从eden区转移到S0)
- S1幸存区 (久一点的实例从S0区转移到S1)
- 年老代(实例从S1晋升)
- 持久代(包含元信息像类、方法细节)

更新:持久代(PermGen)区从Java SE 8 特征中被移除了。
在下一个部分中我们会看到关于在Java中垃圾回收是如何工作的
Java垃圾回收介绍(译)的更多相关文章
- [译]Java 垃圾回收介绍
说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Introduction 在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的. ...
- [译]Java垃圾回收是如何工作的
说明:这篇文章来翻译来自于Javapapers 的How Java Garbage Collection Works 这部分教程是为了理解Java垃圾回收的基础以及它是如何工作的.这是垃圾回收系列教程 ...
- Java GC系列(2):Java垃圾回收是如何工作的?
本文由 ImportNew - 伍翀 翻译自 javapapers. 目录 垃圾回收介绍 垃圾回收是如何工作的? 垃圾回收的类别 垃圾回收监视和分析 本教程是为了理解基本的Java垃圾回收以及它是如何 ...
- Java垃圾回收是如何工作的?
本教程是为了理解基本的Java垃圾回收以及它是如何工作的.这是垃圾回收教程系列的第二部分.希望你已经读过了第一部分:<Java 垃圾回收介绍>. Java 垃圾回收是一项自动化的过程,用来 ...
- [译]GC专家系列2:Java 垃圾回收的监控
原文链接:http://www.cubrid.org/blog/dev-platform/how-to-monitor-java-garbage-collection/ 这是"成为GC专家系 ...
- [译]Java 垃圾回收的监控和分析
说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Monitoring and Analysi 在这个系列的Java垃圾回收教程中,我们将看到可用于垃圾 ...
- 【转载】Java垃圾回收机制
原文地址:http://www.importnew.com/19085.html Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联 ...
- Java GC系列(1):Java垃圾回收简介
本文由 ImportNew - 好好先生 翻译自 javapapers. Java的内存分配与回收全部由JVM垃圾回收进程自动完成.与C语言不同,Java开发者不需要自己编写代码实现垃圾回收.这是Ja ...
- [牛感悟系列]JAVA(1)理解JAVA垃圾回收
理解JAVA垃圾回收的好处是什么?满足求知欲是一方面,编写更好的JAVA应用是另外一方面. 如果一个人对垃圾回收过程感兴趣,那表明他在应用程序开发领域有相当程度的经验.如果一个人在思考如何选择正确的垃 ...
随机推荐
- IE 、Firefox、Chrome 浏览器在 F12 控制台下切换至不同框架介绍
有不少网页的页面,还在使用 iframe 标签,而此时,相当于页面有两个 window 对象,一个为当前页面 window ,另一个则为 iframe 页面下的 window .因为,有时候需要在 c ...
- jquery 绑定省份和城市
前台代码: <asp:DropDownList runat="server" ID="ddlProvince"></asp:DropDownL ...
- CentOS 6.3(x86_64)下安装Oracle 10g R2
目 录 一.硬件要求二.软件三.系统安装注意四.安装Oracle前的系统准备工作五.安装Oracle,并进行相关设置六.升级Oracle到patchset 10.2.0.4七.使用rlwrap调用sq ...
- HTML输出 二 控制行背景颜色
$Infors = Get-Content ports01.txt$Temp_PortStatustxt = "C:\Windows\Temp\PortStatustxt.txt" ...
- node搜索codeforces 3A - Shortest path of the king
发一下牢骚和主题无关: 搜索,最短路都可以 每日一道理 人生是洁白的画纸,我们每个人就是手握各色笔的画师:人生也是一条看不到尽头的长路,我们每个人则是人生道路的远足者:人生还像是一块神奇的土地 ...
- 解决用Eclipse开发Android程序时不能生成R.java的问题
今天我照着Mars老师的视频教程开始学习Android程序开发. 但是,我的Eclipse死活不能生成R.java文件,新建的工程也不行. 然后我百度,百度出来的结果一般是说这样解决: 1.clean ...
- 关于c#调用C++代码的一些应用的体会
1.dll函数的导入: 关键字:unmanaged code ; managed code; 具体应用类:System.Runtime.InteropServices 具体使用方法: ...
- GLSL实现简单硬件Anisotrop Lighting 【转】
http://blog.csdn.net/a3070173/archive/2008/11/13/3294660.aspx 各向异性光照往往用于处理一些具有各向异性表面的物体,如:光盘的盘面.为避免在 ...
- [Javascript] Functor law
Functor laws: 1. Identity: map(id) == id 2. Composition: compose(map(f), map(g)) == map(compose(f,g) ...
- Python dictionary implementation
Python dictionary implementation http://www.laurentluce.com/posts/python-dictionary-implementation/ ...