zoukankan      html  css  js  c++  java
  • JVM之TLAB

        阅读《深入理解Java虚拟机》的过程中,会碰到一些不明就里的名词。虽然大概知道意思,但是如果一眼飘过去,估计过不了多久就会遗忘。这里单独提出来,去查阅资料,先形成自己的理解,再继续往下对比着看。

      这里主要说说TLAB(Thread Local Allocation Buffer)的含义。

    ————————————————————————

      JVM中多个线程在堆内存进行分配,指针碰撞的过程中,假设线程1给对象A分配地址,指针还没来得及修改,此时线程2又给对象B分配地址还是用的没有修改前的指针,此时就会出问题。JVM在解决这个问题时有两个方案。

      一个是采用CAS的方式,配合失败重试的方式来保证更新操作的线程安全性。CAS是乐观锁的一种实现方式,乐观锁即假设操作不会有冲突,如果因为冲突失败了就重试,直到成功为止。

      另一个思路即TLAB,为每个线程分配一小块内存,这一小块内存是只有该线程才能进行对象的分配。线程享有对应区域的私有分配权。如果该区域耗尽,那么再分配新的一小块内存。这里要注意的是,线程只享有私有的分配权,对于使用还是共享的,GC管理也是整个管理,不会区分是哪个线程的对象。如果对象太大无法采用TLAB的模式,那么会被直接(CAS)分配到堆上。

  • 相关阅读:
    django 一对多操作
    django 单表常用操作
    element-ui
    vue与后台交互之post用法
    pip换国内源
    TCP/UDP的理解
    进程/线程/协程的理解
    《手牵手带你走进python世界》系列四
    《手牵手带你走进python世界》系列五
    《手牵手带你走进python世界》系列三
  • 原文地址:https://www.cnblogs.com/bruceChan0018/p/15041758.html
Copyright © 2011-2022 走看看