Java堆栈和程序计时器点滴

Java堆

     Java程序在运行时创建的所有类实例或者是数组都放在同一个堆中。而一个java虚拟机实例中只存在一个堆空间,因此所有线程都将共享这个堆。又由于一个java程序独占一个java虚拟机实例。因而每个java程序都有他自己的堆空间,他们不会彼此干扰。但是同一个java程序的多个线程却共享着同一个堆空间,在这种情况下,就得考虑多线程访问对象(对数据)的同步问题啦

Java栈

     每当启动一个新线程时。Java虚拟机都会为它分配一个java栈 ,java栈以栈帧为单位保存线程的运行状态。虚拟机只会直接对java栈执行两种操作,以帧为单位的 压栈或者出栈。


程序计时器

       对于一个运行中的java程序而言,其中的每一个线程都有他自己的 PC(程序计数器)寄存器。它是该线程启动时创建的,PC寄存器的大小是一个字长,因此它即能够持有一个本地指针,也能够持有一个returnAddress。当线程执行某个java方法时,PC寄存器的内容总是下一条将被执行指令的“地址”,这里的“地址”可以是一个本地指针 ,也可以是在方法 字节码中相对应于方法起始指令的偏移量,如果该线程正在执行一个本地方法,那么此时PC寄存器栈值是“undefined”。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值