- A+
共计 646 个字符,预计需要花费 2 分钟才能阅读完成。
Java日常开发过程中,通过new
关键字和构造函数
创建对象,这些对象是怎么存放安排的呢?尤其是内存是怎么个分配法?
有5个不同的地方可以存储数据:
寄存器
最快的存储区,位于处理器内部,不过存储空间有限,所以得根据需求进行分配,Java不允许直接控制寄存器,也不能在程序中感知到寄存器的存在。
tips:C和C++可以通过向编译器建议寄存器的分配方式;
堆栈
存储分配速度仅次于寄存器,位于通用RAM(随机访问存储器)中,通过堆栈指针获得处理器的支持。
tips:堆栈指针向下移动,则分配新内存;向上移动,则释放旧内存 ———一种快速有效的分配存储方法。
存储内容:基本类型变量,对象引用,方法调用过程
tips:C++可在堆栈中直接创建对象;
堆
存储分配速度次于堆栈,通用的内存池(也位于RAM区),存放所有的Java对象。
tips:只需在程序中使用new写一行简单的代码,即可开辟一处新内存;
常量存储
常量值通常直接存放在程序代码内部,因为他们永远不会被改变!有些时候,在一些嵌入式系统中,常量会和其他部分分隔开,这种情况下会选择将其存放在ROM(只读存储器)中;
tips:比如说字符串池,如字面常量字符串(”通话”,”重地”)、具有字符串值的常量表达式(String s = “Hello World!”);
非RAM存储
如果数据完全存活于程序之外,不受任何程序的任何控制,程序没有运行也可以存在;
流对象——将对象转成字节流,在网络中传输,发给另一台机器;
持久化对象——该对象被存放于磁盘上。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫