Java相比于C++一大特点便是其特有的自动垃圾回收机制,有了它,我们就可以不用再关系内存分配的问题了,也一般不需要担心出现内存泄漏。大家也可以愉快的聚焦于业务发展。那么Java的GC回收到底是怎么实现的呢,本文就来简单的说一下。
要想了解Java的GC机制,首先要对JVM的内存结构有一定的了解,首先让我们来一起了解一下。
1、JVM内存结构
JVM内存结构通常来说由虚拟机栈、堆、本地方法栈、方法区、程序计数器组成,其中每个组件各司其职。下面我来一一简单介绍。
1.1方法区(Method Area)
方法区中主要存储了Java代码中的类加载的相关信息,比如类的名称、修饰符、构造器、静态方法、定义为final的常量、勒种的方法信息。这是一个面向全局线程共享的区域。
1.2虚拟机栈(VM Stack)
这一区域主要存放了大量的线程相关信息,它是随着虚拟机线程的诞生而诞生的,所以它是独属于线程私有的一块区域,其中存放了Java八大基本类型的变量,还有一些局部变量,也就是方法内部的变量。
1.3本地方法栈(Method Area)
这里存放了Java代码中调用的本地方法的信息,主要用于native方法。
1.4堆(Heap)
堆是Jvm立马很重要的一个区域,也是跟方法区一样属于全部线程都可以共享访问的一个区域,在堆中存储了大量的Java对象信息ÿ