JVM笔记2:对象访问

java中对不同位置创建的对象的访问方式是不同的

1,方法中创建的对象

public class Test {
	public void instanceObj(){
		Object obj = new Object();
	}
        ...
}
1,Object obj这一部分的数据将会反映到java栈的本地变量表中,作为一个reference类型的数据存在

2,new Object这一部分将会被反映到java堆中,形成一块存储了Object类型实例数据值(实例数据:对象中各个实例字段的数据)的结构化内存

事实上这并不是绝对的,Java运行时优化有一项为栈上分配:为了提高运行效率,在栈上分配对象的部分或全部属性存储空间,这点在Java运行期优化中会详细说明

3,一些与该对象相关联的其它信息,例如对象类型、父类、接口、方法等等,这些信息存储在虚拟机的方法区中

2、3 -> 对象中的数据+对象特征=一个完整的对象

reference类型在jvm规范中之规定了一个指向对象的引用,并未定义该引用通过哪种方式去定位其所访问的处于java堆中的对象,主流方式有2种:

1,句柄,堆中将会划分出来一块区域作为句柄池

2,指针

2种方式各有优势,但是可以看到指针方式明显节省了一次指针定位时间,速度更快,Sun的HotSpot使用的是指针方式

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值