jvm内存模型

VM 中文名java虚拟机,是用来运行java程序的一个平台,这篇文章 主要讲述 JVM的内存模型。

 

首先JVM将内存划分为了5大块,如下图所示:

JVM内存模型

 

这5大块可以分为 两大类,分别是 线程私有的,和 线程共享的

线程私有的

虚拟机栈,本地方法栈,程序计数器

这块区域的数据是每个线程私有的,随着线程的创建而创建,线程的结束而释放

 

虚拟机栈

这块区域用于存放局部变量表(基本类型的变量,会把数据一起存在这,引用类型的 会将内存地址存在这) 以及 正在运行的方法信息

 

本地方法栈

这一块和虚拟机栈基本一致,但他存放的是 本地方法 创建的数据,程序员一般不需要过多的去关注他。

 

程序计数器

这块区域存放的是 线程正在执行的 字节码的行号指示器

 

线程共享的

方法区,堆

这块区域的数据是每个线程共享的,他的生命周期跟线程无关,通常有垃圾回收机制来进行回收

 

方法区

这块区域也被称为 永久代 或者静态区,从名字就可以看出来,他是用于存放一些 永久性质的数据的,包括如下数据:

常量池存在于此

1. 类的访问修饰符,类型(接口,抽象,类),全线名称

2. 字段的访问修饰符,类型,名称,

3. 方法的访问修饰符,返回类型,名称,参数个数,参数类型等。

 

同时 静态成员变量以及常量(包括值) 也会存在这块区域。

 

这块区域用于存放对象的实例,垃圾回收一般情况下只会在这个区域进行。

原文地址:https://www.cnblogs.com/wcss/p/12299968.html