Java 对象在内存中的存储

Java中  强调:  一切都是对象 

尽管如此  但是操纵的标识符实际上是对象的一个引用   借用THINKING IN JAVA 书中的例子 :

对象作为电视机   引用就作为遥控器    只要握有这个遥控器  就可以保持与电视机的联系   当想改变频道时   实际上操纵的是遥控器,

再由遥控器来调控电视机(对象)

此外 ,引用也可以独立存在,如: String sl;  这里只是创建了引用  并不是对象

如何将引用和一个新的对象关联呢  用 new 关键字  

比如:  String s  = new  String("asdf");


还有一个重要的概念 ,Java 中所有的对象都要通过对象引用访问   也就是每个对象得存在一个引用


那么,对象 或 引用 存储在什么地方了呢 ?

首先,有五个不同的地方可以存储数据;

1)寄存器:它直接位于处理器内部   Java中不能直接控制寄存器  

2)堆栈   :位于通用RAM(随机存储器)中,通过堆栈指针可以从处理器获得直接支持,堆栈指针向下移动,则分配新的内存,若向上移动,则释放内存,这样做十分高效。

但是创建程序时,Java系统必须知道堆栈中所有项的确切生命周期,这一约束限制了程序的灵活性。 基本类型对象引用就存在其中,但Java对象除外。

3)堆      :一种通用的内存池(也位于RAM),  用于存放所有的Java对象   。缺点就是为了灵活性而增加了时间.

4)常量存储: 通常直接存在程序代码内部,这样做是安全的 ,因为它们永远不会被改变。

5)非RAM存储:两个基本的例子就是 流对象持久化对象。流对象中,对象被转化为字节流; 持久化对象中,对象被存在与磁盘上,如数据库。


所以说对象引用是指向对象存储所在堆中的某个区域的指针




  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值