深入理解JAVA虚拟机--HotSpot虚拟机对象

对象的创建

虚拟机遇到new指令:   首先先去检查这个指令的参数是否在常量池中定位到一个类的符号引用,

                                      并检查这个符号引用代表的类是否被加载、解析和初始化过。

                                      如果没有,执行相应的类加载;

类加载通过,VM为新生对象分配内存:内存大小在类加载后完全确定。

                                       分配方式:指针碰撞--Java堆内存绝对规整

                                                        空闲列表--ava堆内存不规整

                                       Java堆是否规整由所采用的垃圾收集器是否带有压缩整理功能决定。

                      另一个需要考虑的问题:对象创建行为频繁,仅修改一个指针指向的位置,并发情况下不能保证线程安全?

                      现象:正在给A对象分配内存,指针没来得及修改,B对象同时使用了原来的指针来分配内存。

                     解决方案:

                             第一种:对分配内存空间的动作进行同步处理--VM采用CAS 配上失败重试的方式保证更新操作的原子性;

                             第二种:把内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在Java堆中预先分配一小块内                                              存,称为本地线程分配缓冲(TLAB)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值