Thinking in Java--对象存储位置
来源:互联网 发布:app表白软件 编辑:程序博客网 时间:2024/05/23 02:23
1、寄存器
这是最快的存储区,因为它位于处理器的内部。但是由于寄存器的大小数量都是有限的,所以寄存器是由编译器根据需求进行分配。你不能直接控制,也不能感觉到寄存器的存在。
2、堆栈
位于通用RAM(随机访问存储器)中,但是通过“堆栈指针”可以从处理器那里获得直接的支持。通过堆栈指针的上下移动来为程序分配需要的空间,它的速度仅仅次于寄存器的速度。创建程序的时候,Java编译器必须知道存储在堆栈内所有数据的确切大小和生命周期,因为它必须生成相应的代码,一边上下移动指针。这样的一种限制很大程度上限制了程序的灵活性。所以Java虽然某些数据存储在堆栈中(对象引用),但是实际的Java对象并不存储在堆栈中,而是存储在堆中。
3、堆
位于RAM,由于存储Java对象。堆不同于堆栈的好处在于:编译器不需要知道程序数据所需要的空间的大小和生命周期。所以可以直接new出对象,在执行的时候会自动的在堆里面自动分配内存。这样程序相对来说,就变得灵活了一些。但是问题来了,用堆进行内存分配比用堆栈进行存储分配需要更多的时间(这也是大家都说Java慢的原因之一吧)。
4、静态存储
位于RAM了,对应于Java中static关键字标识的某个对象的特定元素。静态是指:在固定的位置
5、常量存储
常量值通常直接存放在程序代码内部。
6、非RAM存储
如果数据存在于程序之外,它可以不受程序的任何控制,在程序没有运行的时候也可以存在,对应Java中的“流对象”和“持久化对象”。
0 0
- Thinking in Java--对象存储位置
- Thinking in java 之'对象的存储位置'
- Thinking in Java:持有对象
- 【Thinking in java】对象导论
- 【Thinking in java】一切都是对象
- 【Thinking in java】对象导论
- 【Thinking in java】一切都是对象
- Thinking in java-对象导论
- 【Thinking in Java】一切都是对象
- Java对象存储位置
- Thinking in java -- set和存储顺序
- java线程 在其他对象上同步、线程本地存储ThreadLocal:thinking in java4 21.3.6
- [Thinking In Java] 之 一切皆对象
- thinking in java笔记 2 一切都是对象
- 《thinking in java》之第一章对象导论
- Thinking in Java:对象初始化顺序
- 【Thinking In Java】笔记之一 一切都是对象
- [thinking in java]对象保存到什么地方
- model/view视图
- Python RAKE 关键字提取
- 【Leetcode】Merge Two Sorted Lists in JAVA
- 浅谈程序员的薪资和工作经验
- Android数据存储
- Thinking in Java--对象存储位置
- 最小二乘法的基本原理和多项式拟合
- 获取微信服务器IP地址
- bzoj 1040: [ZJOI2008]骑士
- 属性readwrite,readonly,assign,retain,copy,nonatomic
- Gradle Android插件 官方文档 (4)
- 首次曝光!小米自主操作系统MIOS现身
- 黑马程序员-c语言数组
- 探秘膳食纤维