java的内存模式

Java的内存模式

   Java的内存模式,亦即Java执行处理系统所设置的内存模式,规定于"Java语言规格书第二版"的第17章"线程与锁定",但这个规格在解读上十分困难,因此,下面针对一下几个问题进行详细的解说。

 

主存储器与工作存储器

   Java的内存模式分为主存储器和工作存储器两种,它们各有自己的职责。

   主存储器是实例位置所在的区域,所有的实例都存在与主存储器中。尤其,实例所拥有的字段即位于主存储器的区域内。主存储器为所有线程所共有的,因此可以认为是共享的内存区域。

   工作存储器为各个线程所拥有的工作区,所有有的线程都有自己专用的工作存储器。在工作存储器内,存在有主存储器中必要的部分的拷贝,称为工作拷贝。

 

字段的引用

   线程无法对主存储器直接进行操作,因此它也无法直接引用字段的值。

   当线程欲引用字段的值时,会一次将值从主存储器拷贝到工作存储器上。通过此来拷贝所有得到的值,会成为工作拷贝。拷贝完成后,线程就会引用工作拷贝。

   当同一线程再度引用同一个字段的值时,会发生什么事情呢?线程或许会引用刚刚所制作的工作拷贝,也可能会先重新从主存储器拷贝到工作存储器,然后才引用工作拷贝。会出现哪种状况,完全是由java执行处理系统来决定。

 

指定字段

   线程无法直接对主存储器进行操作,因此它也无法将值直接指定给字段。

   当线程欲将值指定给字段时,会一次将值指定给位于工作存储器上的工作拷贝。指定完成后,工作拷贝的内容便会映像到主存储器。至于何时会映像到主存储器,则是由java执行处理系统来决定。

   当同一个线程反复指定至同一个字段时,会发生什么事呢?在反复进行指定的期间,线程有可能只会对工作拷贝进行指定,此时,只有指定的最后结果会拷贝到主存储器。另外,线程也有可能在每次进行指定时,进行拷贝到主存储器的操作。会出现哪种情况,也是由java执行处理系统来决定的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值