《深入理解java虚拟机》java的内存区域

一个java程序运行时,数据都是存放在内存中的,要记住,是运行时,编译的时候(非运行时),数据是存放在class文件中的。

运行时数据区分为以下几个:

1、方法区

    方法区是线程共享的,运行时,里面存放的是类加载时的信息,常量,静态变量,JIT编译后的代码数据。它包含了另一个东西-运行时常量池。运行时常量池存放字面量和符号引用

2、方法栈(虚拟机栈)

   方法栈是线程私有的,运行时,没运行一个方法,就生成一个栈帧,每个栈帧里面存放着这个方法的局部变量表,操作数栈、动态链接、方法出口等信息

4、程序计数器

   程序计数器是线程私有的,任何一个确定的时候,jvm只会执行一条指令(单核),它表示当前线程下一条要执行的指令的地址。

5、堆

其中,线程私有的区域有   程序计数器 、 方法栈  2个。

这里要说到一个   运行时常量池和class常量池的区别,编译期间,数据都存放在class文件中,class文件中包含一个东西,就是常量池。当程序运行时,class文件中的常量池内容放到运行时常量池中。String的intern能够在运行时把新的常量放入运行时常量池中。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值