jvm内存模型
Posted wcss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jvm内存模型相关的知识,希望对你有一定的参考价值。
VM 中文名java虚拟机,是用来运行java程序的一个平台,这篇文章 主要讲述 JVM的内存模型。
首先JVM将内存划分为了5大块,如下图所示:
JVM内存模型
这5大块可以分为 两大类,分别是 线程私有的,和 线程共享的
线程私有的
虚拟机栈,本地方法栈,程序计数器
这块区域的数据是每个线程私有的,随着线程的创建而创建,线程的结束而释放
虚拟机栈
这块区域用于存放局部变量表(基本类型的变量,会把数据一起存在这,引用类型的 会将内存地址存在这) 以及 正在运行的方法信息
本地方法栈
这一块和虚拟机栈基本一致,但他存放的是 本地方法 创建的数据,程序员一般不需要过多的去关注他。
程序计数器
这块区域存放的是 线程正在执行的 字节码的行号指示器
线程共享的
方法区,堆
这块区域的数据是每个线程共享的,他的生命周期跟线程无关,通常有垃圾回收机制来进行回收
方法区
这块区域也被称为 永久代 或者静态区,从名字就可以看出来,他是用于存放一些 永久性质的数据的,包括如下数据:
1. 类的访问修饰符,类型(接口,抽象,类),全线名称
2. 字段的访问修饰符,类型,名称,
3. 方法的访问修饰符,返回类型,名称,参数个数,参数类型等。
同时 静态成员变量以及常量(包括值) 也会存在这块区域。
堆
这块区域用于存放对象的实例,垃圾回收一般情况下只会在这个区域进行。
以上是关于jvm内存模型的主要内容,如果未能解决你的问题,请参考以下文章