网站首页 > java教程 正文
·new&类加载检测
当遇到new指令时,JVM首先会进行类加载检测:
①检测new指令的参数是否能在常量池中定位类的符号引用;
②检测这个符号引用是否进行过加载解析和初始化,没有则先对该类进行类加载。
·对象内存分配
创建一个对象所需要的内存在类加载完成时就能确定,内存分配是指在堆中划出一块和对象大小的对应内存出来,具体的分配方式根据堆内存的整齐性决定,而堆内存的整齐性则由当前程序采用GC机制决定。
分配方式:①指针碰撞(堆整齐) ②空闲列表(堆不整齐)
分配出现并发情况解决方案:①CAS自旋 ②TLAB本地内存
·值初始化
JVM初始化分配好的内存,将其设为零值(不包括对象头,如果使用了TLAB,这一步会提前到内存分配阶段进行)。
·设置对象头
完成初始化操作后接着会对于对象的对象头进行设置:
①mrakword:存储对象自身的运行时数据,如hashcode、GC分代年龄、锁标志、锁信息等;
②klassword:类型指针,指向它对应的类元数据,JVM用这个确定其属于哪个类的实例。
·执行init函数
最后执行
·TLAB分配
TLAB(Thread Local Allocation Buffer,即线程本地分配缓存),是一块线程专用的内存分配区域。TLAB占用的是eden区的空间,在TLAB启用的情况下(默认开启),JVM会为每一个线程分配一块私有缓冲区域,即为TLAB内存区域。栈上分配与TLAB分配区别:
①栈上分配使用的是栈来进行对象内存的分配
②TLAB分配使用的是eden区域进行内存分配,实际还是属于堆内存
③栈上分配优先于TLAB分配,逃逸分析中若可进行栈上分配优化,会优先栈上分配内存
④当无法进行栈上直接分配时,则会进行TLAB分配
JVM中TLAB相关参数:
其中,
-XX:TLABRefillWasteFraction指当TLAB空间不足,请求分配的对象内存大小超过此阈值时不会进行TLAB分配,直接进行堆内存分配,否则还是进行TLAB分配。
TLAB的意义:加速对象的分配。因为对象一般分配堆内存,而堆是线程共享的,在多线程环境下,可能会有多个线程同时在堆上申请空间,导致空间分配需要线程同步,会使分配的效率下降。TLAB是Java Hotspot编译器对于new对象的优化,为每一个线程都在Eden区中分配了一块专享空间供线程使用。
·对象成员分配内存后初始化顺序
①处于并列优先级的按照Java程序编写时代码的先后顺序加载
②前面两步为静态过程,程序运行过程中只会执行一次,之后再次创建该类或该子类的对象时并不会再次执行。
- 上一篇: JAVA创建对象有哪几种方式?
- 下一篇: 数组的语法
猜你喜欢
- 2025-03-11 JAVA创建对象有哪几种方式?
- 2025-03-11 从一个例子中解析JAVA新建一个对象的过程
- 2025-03-11 JVM 从入门到放弃之 Java 对象创建过程
- 2025-03-11 Java 对象的创建流程
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)