本贴最后更新于 1438 天前,其中的信息可能已经水流花落
对象创建
- 创建过程
- 检查加载 检查符号引用, 如未解析, 则类加载
- 分配内存
- 内存空间初始化 赋初值
- 对象头设置
- 初始化
- 划分内存方式
- 并发安全
对象内存布局
对象访问定位
- 句柄 间接引用堆上的实例(Hotspot 使用) 安全, 方便 GC
- 直接引用
对象分配策略
- 栈上分配
- 经过逃逸分析, 无法逃逸的对象可能在栈上直接分配
- 标量替换, 如果无法逃逸的对象只有标量属性赋值和访问操作, 则不创建对象, 直接拆分成栈上标量
- TLAB 线程本地分配
- 正常堆上分配
- 分配空间担保原则 新生代垃圾进入老年代前的担保
- 默认: 当老年代可用空间大于新生代总对象大小, 则可分配; 如不满足, 进入担保策略, 老年代可用空间大于历史进入老年代的垃圾平均值, 则可分配, 如果分配失败, 则 FullGC; 如不满足, 直接 FullGC
- 关闭 HandlePromotionFailure 担保: 当老年代可用空间大于新生代总对象大小, 则可分配; 如不满足, 直接 FullGC
-
Java
Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。
3187
引用
•
8213
回帖
-
JVM
JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。
180
引用
•
120
回帖
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于