JVM_03-1对象的创建
2022-09-06 10:31:58   0  举报             
     
         
 AI智能生成
  JVM_03-1对象的创建
    作者其他创作
 大纲/内容
  类加载检查  
     分配内存    
     分配方法    
     “指针碰撞”(Bump the Pointer)    
     Java堆中内存是绝对规整的  
     所有用过的内存都放在一边,空闲的内存放在另一边  
     中间放着一个指针作为分界点的指示器  
     “空闲列表”    
     Java堆中的内存并不是规整  
     已使用的内存和空 闲的内存相互交错  
     虚拟机就必须维护一个列表,记录上哪些内存块是可用的  
     解决并发问题的方法    
     CAS(compare and swap)    
     CAS配上失败重试的方式  
     TLAB    
     每个线程在Java堆中预先分配一小块内存  
     -XX:+/-UseTLAB参数来设定虚拟机是否使用TLAB    
     JVM会默认开启  
     -XX:TLABSize 指定TLAB大小    
     默认大小伊甸园的1%  
     初始化  
     设置对象头    
     对象在内存中存储的布局    
     对象头(Header)    
     MarkWord
    
     32位占4字节  
     64位占8字节  
     KlassPointer类型指针    
     开启指针压缩占4字节  
     关闭指针压缩占8字节  
     数组长度    
     4字节,只有数据对象才有  
     实例数据(Instance Data)  
     对齐填充(Padding)    
     loss due to the next object alignment  
     保证对象是8个字节的整数倍(计算机最优的寻址算法)  
     java对象的指针压缩    
     jdk1.6 update14开始,在64bit操作系统中,JVM支持指针压缩    
     jvm配置参数  
     哪些信息会被压缩    
     对象的全局静态变量(即类属性)  
     对象头信息:64位平台下,原生对象头大小为16字节,压缩后为12字节  
     对象的引用类型:64位平台下,引用类型本身大小为8字节,压缩后为4字节  
     对象数组类型:64位平台下,数组类型本身大小为24字节,压缩后16字节  
     执行<init>方法  
    
 
 
 
 
  0 条评论
 下一页
  
   
   
   
   
  
  
  
  
  
  
  
  
  
  
 