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)分配到堆上。

  • 相关阅读:
    JedisConnectionException: java.net.ConnectException: Connection refused
    启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法
    JAVA 判断一个字符串是不是一个合法的日期格式
    升级openssl
    Linux操作路由
    Linux的用户行为审计
    升级gdb
    Linux的运行级别
    sudo的用法
    Linux缓存清理
  • 原文地址:https://www.cnblogs.com/bruceChan0018/p/15041758.html
Copyright © 2011-2022 走看看