[译]Java 垃圾回收介绍
说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Introduction
在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的。和C语言不一样的是,开发中不需要在Java中写垃圾回收代码。这也是使Java更加流行而且帮助开发中写出更好的Java应用程序的Java特性之一。
下面是关于Java 垃圾回收的基础介绍的四个系列文章。
1.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 垃圾回收介绍的更多相关文章
- Java垃圾回收介绍(译)
在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的.与C语言不同的是,在Java中开发者不需要专门为垃圾回收写代码.这是使Java流行的众多特征之一,也帮助了程序员写出了更好的 ...
- [译]Java垃圾回收是如何工作的
说明:这篇文章来翻译来自于Javapapers 的How Java Garbage Collection Works 这部分教程是为了理解Java垃圾回收的基础以及它是如何工作的.这是垃圾回收系列教程 ...
- [译]Java 垃圾回收的监控和分析
说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Monitoring and Analysi 在这个系列的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垃圾回收机制
原文地址: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应用是另外一方面. 如果一个人对垃圾回收过程感兴趣,那表明他在应用程序开发领域有相当程度的经验.如果一个人在思考如何选择正确的垃 ...
随机推荐
- 由Java代码运行shell命令/脚本
JDK有两种方法自带通Runtime.getRuntime().exec()和ProcessBuilder课上做, 后者是JDK1.5引进后,,政府还提出要放弃使用Runtime顺便做.现的时候就是採 ...
- hdu4453 Looploop 2012年杭州现场赛 Splay
题意:维护一个圈,实现六个功能,给某位置起的一些数增加某值,反转某一段数,添加删除某些数,移动当前所指的位置, 简单的splay,把圈拆成链,对于每种操作,处理一下. #define inf 0x3f ...
- Python 新浪微博中提取最常见转载的微博转载了几次,username,内容
CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-4 @author: guaguastd @name: fi ...
- nginx做反向负载均衡,后端服务器获取真实客户端ip(转)
首先,在前端nginx上需要做如下配置: location / proxy_set_hearder host $host; proxy_set_header X-forw ...
- OCP读书笔记(22) - 题库(ExamB)
101.Identify two situations in which you can use Data Recovery Advisor for recovery. (Choose two.) A ...
- 《C++ Primer Plus》学习笔记6
<C++ Primer Plus>学习笔记6 第11章 使用类 <<<<<<<<<<<<<<<&l ...
- 使用PHP顶替JS有趣DOM
較简单,我须要把一个导航页的数据整理好写入数据库.一个比較直观的方法是对html文件进行分析.通用的方法是用php的正則表達式来匹配.可是这样做开发和维护都非常困难,代码可读性非常差. 导航页的数据都 ...
- Merge into的使用详解-你Merge了没有
Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key. Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一 ...
- HDU1203_I NEED A OFFER!【01背包】
I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 取一种类型里面的产品销售前3甲的数据Sql
需求:取出每种分类里面的销售前3甲的产品信息 表设计如下图: 数据如下: 两种方法可以实现: 1. SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION ...