JVM · Java虚拟机原理 · JVM上语言·框架· 生态系统

java虚拟机之创建对象.

2018-04-21  本文已影响24人  励志做一名老中医

在我们平时,创建对象只是简单的一个new,但是对于虚拟机是如何完成对象的创建的那,废话不多说 .

直接上图:

java虚拟机创建对象

问题解答:

问:如何保证线程分配内存的原子性,举例来说,如果虚拟机正在给A对象分配内存的时候,A对象的内存还没有进行分配,B对象被分配了该内存的时候,这种情况虚拟机是如何办证内存分配的原子性的那?

有两种方法,第一种  虚拟机会采用CAS的方法进行内存的分配,也就是失败重试.CAS方法的意思 是有三个值,内存制V,旧的预期值A,以及新的预期值B,创建对象的时候只有当A与V相同的时候才不会重试.

第二种:使用TLAB方式为线程分配内存, 虚拟机会预先为线程创建一个小的内存区域,那个线程想要分配内存就在那个线程上的TLAB上分配,只有一个TLAB使用完之后才会创建一个新TLAB.

上一篇下一篇

猜你喜欢

热点阅读