企业网站怎么管理系统,网站开发指什么,wordpress 右侧悬浮,国外设计网站pinterest下载目录 为对象分配内存的方式
指针碰撞
空闲列表
TLAB
死亡对象判断方法
引用计数法
可达性分析算法 为对象分配内存的方式
指针碰撞
一般情况下#xff0c;JVM的对象都放在堆内存中#xff08;发生逃逸分析除外#xff09;。当类加载检查通过后#xff0c;JVM为新生…
目录 为对象分配内存的方式
指针碰撞
空闲列表
TLAB
死亡对象判断方法
引用计数法
可达性分析算法 为对象分配内存的方式
指针碰撞
一般情况下JVM的对象都放在堆内存中发生逃逸分析除外。当类加载检查通过后JVM为新生对象分配内存。如果Java堆中内存是绝对规整的所有被使用过的的内存都被放到一边空闲的内存放到另外一边中间放着一个指针作为分界点的指示器需要为新对象分配内存时指针就向空闲区移动到对应位置这种分配方式就是 指针碰撞。 空闲列表
如果Java堆内存中的内存并不是规整的已用的内存和空闲内存相互交错指针碰撞就不能用了虚拟机必须维护一个列表记录哪些内存是可用的在分配的时候从列表找到一块大的空间分配给对象实例并更新列表上的记录这种分配方式就是空闲列表。
TLAB
把内存分配按照线程划分在不同的空间中进行每个线程在Java堆中预先分配一小块内存,这就是TLAB本地线程分配缓存 。虚拟机通过 -XX:UseTLAB 设定它的。
死亡对象判断方法
引用计数法
给对象中添加一个引用计数器 每当有一个地方引用它计数器就加 1 当引用失效计数器就减 1 任何时候计数器为 0 的对象就是不可能再被使用的。
优点实现简单效率高。
缺点它很难解决对象之间循环引用的问题。
可达性分析算法
基本思想就是通过一系列的称为 “GC Roots” 的对象作为起点从这些节点开始向下搜索节点所走过的路径叫做引用链当一个对象到 GC Roots 没有任何引用链相连的话则证明此对象是不可用的需要被回收。
哪些对象可以作为 GC Roots 虚拟机栈(栈帧中的本地变量表)中引用的对象 本地方法栈(Native 方法)中引用的对象 方法区中类静态属性引用的对象 方法区中常量引用的对象 所有被同步锁持有的对象 JNIJava Native Interface引用的对象