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/