Java虚拟机的内存布局

Java虚拟机的内存布局

JVM是Java提出的核心概念,其中的内存模型(JMM)是JVM的重点,需要我们重点了解掌握
JVM内存划分:
1、方法区 (线程共享) 常量 静态变量 JIT(即时编译器)编译后代码也在方法区存放
2、堆内存(线程共享) 垃圾回收的主要场地
3、程序计数器 当前线程执行的字节码的位置指示器
4、Java虚拟机栈(栈内存) :保存局部变量,基本数据类型以及堆内存中对象的引用变量
5、本地方法栈 (C栈):为JVM提供使用native方法的服务

    (1)程序计数器(PC寄存器)
        程序计数器的定义:程序计数器是一块较小的内存空间,是当前线程正在执行的哪一条字节码指令的地址,
    若当前线程正在执行的是一个本地方法,那么此时程序计数器为Undefined
    (2)Java虚拟机栈
        描述Java方法运行过程的内存模型
    主管Java程序的运行,是在线程创建时创建,它的生命期是跟随线程的生命期,线程结束栈内存也就释放,
    对于栈来说不存在垃圾回收问题,只要线程一结束该栈就Over,生命周期和线程一致,是线程私有的。
    (3)本地方法栈(C栈)
        是为了JVM运行native方法准备的空间,由于很多native方法都是用C语言实现的,所以通常又叫C栈,
    它与Java虚拟机栈实现的功能类似,只不过本地方法栈描述本地方法运行过程的内存模型.
    (4)堆
        堆是用来对象的内存空间,几乎所有的对象都存储在堆中
    堆这块区域是JVM中最大的,应用的对象和数据都是存在这个区域,这块区域也是线程共享的,也是 gc 主要的回收区,
    一个JVM实例只存在一个堆类存,堆内存的大小是可以调节的。类加载器读取了类文件后,需要把类、方法、常变量放到堆内存中,以方便执行器执行
    (5)方法区
        Java虚拟机规范中定义方法区是堆的一个逻辑部分,方法区存放以下信息 已被虚拟机加载的类信息 /常量 /静态变量 /即时编译后代码
    线程共享.方法区是堆的一个逻辑部分,因此和堆一样,都是线程共享,整个虚拟机中只有一个方法区
    本人才疏学浅,如有错误,烦请指出,谢谢!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值