java虚拟机之创建对象.

作者: 励志做一名老中医 | 来源:发表于2018-04-21 17:50 被阅读24次

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

    直接上图:

    java虚拟机创建对象

    问题解答:

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

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

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

    相关文章

      网友评论

      本文标题:java虚拟机之创建对象.

      本文链接:https://www.haomeiwen.com/subject/ayxflftx.html