GC入门指南(一)------基础

java中,对象内存空间的分配与回收都是通过JVM的gc进程自动进行的。java程序员并不需要像c程序员那样手动去管理内存空间。这也是java受欢迎的众多原因之一。

接下来我将通过四篇文章介绍GC。

1.GC简要介绍;

2.GC工作原理;

3.GC收集器种类;

4.GC的监控与分析.

这是本系列的第一篇,我将介绍一些基础知识例如JDK,JRE,JVM,Hot Spot虚拟机,然后将介绍JVM体系结构以及java堆内存结构。在学习GC之前掌握这些知识很有必要!

java核心术语:

1.java API:帮助java程序员构建java应用程序的一系列类库集合;

2.JDK:java开发工具集,使java程序员构建java程序的一系列工具,包括编译,执行,管理,分发,监控等多方面内容。

3.JVM:java虚拟机,根据虚拟机规范编写,不同平台的虚拟机实现有所不同,JVM屏蔽了底层操作系统的差异性。

4.JRE:java运行时环境。

Hot Spot虚拟机:

不同的JVM实现可能基于不同的垃圾回收方式,Sun被收购前使用的是JRockit虚拟机,被Oracle收购后使用的是HotSpot。在不久的将来,两个不同的JVM实现将合二为一。

HotSpot虚拟机是Oracle SE平台的一个核心组件,本系列中的垃圾回收理论都是基于HotSpot虚拟机。

JVM体系结构:

下面的插图总结了虚拟机的所有核心组件。在java虚拟机体系结构中,跟垃圾回收相关的两个核心组件是堆内存和GC回收器。堆内存是运行时数据区的一个组成部分,java实例将被分配在其中,GC回收器作用的也正是这块区域。

java堆内存:

正确理解堆内存在java内存模型中所扮演的角色非常重要,在运行时,java实例都将存储在堆内存中,当一个对象没有被任何其他对象引用时,它就可以被垃圾收集器回收了,堆内存有三个核心区域:

1.新生代。

1.Eden区域

2.S0 Survivor

3.S1 Survivor

2.老年代。

3.永久代。(注:永久代现已从堆内存中移除,即现在的方法区)。

原文:http://javapapers.com/java/java-garbage-collection-introduction/

时间: 2024-08-05 22:35:09

GC入门指南(一)------基础的相关文章

GC入门指南(三)----垃圾收集器类型

这篇文章我们来学习下所有可用的垃圾收集器类型.java目前有四种类型的垃圾收集器: 1.串行垃圾收集器(Serial Garbage Collector): 2.并行垃圾收集器(Parallel Garbage Collector): 3.CMS垃圾收集器(CMS Garbage Collector); 4.G1垃圾收集器(G1 Garbage Collector); 每种类型都有其优点和缺点,最重要的是我们开发者可以通过jvm参数为JVM选择不同的垃圾收集器.每种垃圾收集器关注点都不同,其带来

Ember.js 入门指南——handlebars基础

Ember采用handlebars模板库作为应用程序的view层.Handlebars模板与普通的HTML非常相似.但是相比普通的HTML而言handlebars提供了非常丰富的Ember表达式. Ember采用handlebars模板并且扩展了很多功能,让你使用handlebars就像使用HTML一样简单.你设置可以指定某个模板显示你的应用程序界面,并且还不需要编写更新界面显示值的代码,Ember会自动为你更新. 在介绍模板之前先介绍一个非常有用.强大的工具 Ember CLI,使用这个工具可

Ember.js 入门指南——总目录

Ember.js 是什么?我想对于想学习它的人应该知道它是个什么东西,如果你想了解那就赶紧去 Google 或者百度,本系列教程是通过学习官网教程然后摘抄个人觉得比较重要的部分,加上学习实例整合而成,如有疏漏欢迎提出修改意见,一起成长! Ember官网:http://emberjs.com/ 教程官网:http://guides.emberjs.com/v2.0.0/ 在此简单介绍下 Ember: Ember是一个雄心勃勃的Web应用程序,消除了样板,并提供了一个标准的应用程序架构的JavaSc

Win32编程API 基础篇 -- 1.入门指南 根据英文教程翻译

入门指南 本教程是关于什么的 本教程的目的是向你介绍使用win32 API编写程序的基础知识(和通用的写法).使用的语言是C,但大多数C++编译器也能成功编译,事实上,教程中的绝大多数内容都适用于任何可以连接API的语言,包括Java.Assembly和Visual Basic:我不会向你呈现任何跟这些语言相关的代码,这需要你在本教程的指导下自己去完成,有一些人在本API的基础上使用其他语言进行编程取得了相当的成功. 本教程不会教你C语言,也不会告诉你怎样去运行你特定的编译器(Borland C

Quartz.NET简介及入门指南

Quartz.NET简介 Quartz.NET是一个功能完备的开源调度系统,从最小的应用到大规模的企业系统皆可适用. Quartz.NET是一个纯净的用C#语言编写的.NET类库,是对非常流行的JAVA开源调度框架 Quartz 的移植. 入门指南 本入门指南包括以下内容: 下载 Quartz.NET 安装 Quartz.NET 根据你的特定项目配置 Quartz 启动一个样例程序 下载和安装 你可以下载 zip 文件或使用 Nuget 程序包.Nuget 程序包只包含 Quartz.NET 运

Java程序员的Golang入门指南(上)

Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis.类Evernote的云笔记leanote等. 1.1 为什么要学习 如果有人说X语言比Y语言好,两方的支持者经常会激烈地争吵.如果你是某种语言老手,你就是那门语言的"传道者",下意识地会保护它.无论承认与否,你都已被困在一个隧道里,你看到的完全是局限的.<肖申克的救赎>对此有很好的注脚: [Red] These walls are funny.

【翻译Autofac的帮助文档】1.入门指南

[写在前面]尝试做完一件工作之外自我觉得有意义的一件事,那就从翻译Autofac的帮助文档吧. 入门指南 将Autofac集成你的应用程序的步骤通常很简单,一般是: 时刻以IOC(控制反转)的思想来规划你的应用程序 在你的Porject中添加Autofac引用 按照如下步骤设计应用程序的启动环节 创建一个ContainerBuilder 向ContainerBuilder注册组件 通过ContainerBuilder的Build()方法获得Container(后续需用到) 在应用程序运行环节时,

Markdown——入门指南

导语: Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记符号也不超过十个,这种相对于更为复杂的 HTML 标记语言来说,Markdown 可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果. Ulysses for Mac 一,认识 Markdown 在刚才的导语里提到,Markdown 是一种用来写作的轻量级「标记语言」

[转载]TFS入门指南

[原文发表地址] Tutorial: Getting Started with TFS in VS2010 [原文发表时间] Wednesday, October 21, 2009 1:00 PM 本月初,我们发布了TFS新基础配置.该配置为建立支持源码管理,工作项和生成(builds)的TFS版本提供了便利. 这是一个好机会将你在VSS(Visual Source Safe)上的资源迁移到TFS,并且还可以选用一些新的特性.现在VS2010 Beta2的正式版已经发布了,下面是该系统的入门指南