1.1 关于JVM内存结构的个人理解

JVM的个人理解

JVM : JVM是Java Virtual Machine的缩写 , 意思是java虚拟机 . 对于每个程序员来说JVM都是避不开的一个概念 , 因为JVM是自动管理的 , 很少需要去手动调整 , 所以很多新手程序员对JVM都一知半解 , 比如我 . 于是就兴起了去网上大量的寻找资料 , 来详细的了解JVM是种什么样的存在 .

在这里插入图片描述

1. JVM的结构

JVM的内存可以当成一片空白的区域 , 这一片空白的区域里面 , 可以分为几个小的内存区域 : 程序计数器 , 虚拟机栈 , 本地方法栈 , 方法区 , 堆 .

一 . 程序计数器(Program Counter Register)

程序计数器是存放下一条指令所在单元地址的地方 . 当执行一条计算机指令的时候 , 需要根据PC中存放的指令地址 , 将指令由内存中取到指令寄存器中 , 这一过程叫做"取指令" , 取出的时候 PC中的地址自动加一或者由指针指出下一条指令的地址 , 再经过分析和执行完成第一条指令的执行 . 由此去循环重复执行指令 . 当计算机重启或关机的时候 地址归零 . 于是多线程就产生了 , 每个线程之间去根据处理器时间切换地址去进行处理 , 每个线程都有单独的程序计数器来保证能切换回原来的线程 .

总结 : 程序计数器就是存放计算机执行线程的指令所在的区域内存 , 是线程私有的的区域 .

二 . 虚拟机栈

当虚拟机栈创建的时候 , java线程也会同步创建 , 所以java栈也是线程私有的区域 . 虚拟机栈是一种后入先出的数据结构 , 当方法被调用并返回结果的时候 , 就是栈帧入栈出栈的过程 .

三 . 本地方法栈

本地方法栈是和虚拟机栈类似 , 一个是为了java方法服务 , 而本地方法栈是为了Native方法服务的 .

四 . 方法区

方法区里面包括 class文件常量池和运行时常量池 , 而class文件里面的类型信息是由类加载器在类加载时从类文件中提取出来的 .

五 . 堆

堆是存储java实例或对象的地方 .
存储的全部是对象 , 没一个对象包含一个与之对应的class文件信息 , 堆中不存放基本类型和对象引用 , 只存放对象本身 . 堆也是被所有线程所共享 .

tips : JVM所存在的区域以我个人理解 , 就以上五个区域 , 具体详细的说明 , 各位程序猿可以去往底层深究 .

总结: JVM内存结构可以大致分为五个部分 : 程序计数器 , 堆 , 栈 , 方法区 , 本地方法栈 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值