内存的数据存储机制?
发布网友
发布时间:2022-04-19 13:19
我来回答
共1个回答
热心网友
时间:2023-07-14 22:36
1.寄存器(register)。这是最快的存储区,寄存器的数量极其有限,所以寄存器由
编译器
根据需求进行分配,你不能
直接控制
。
2.堆栈(Stack)。位于通用RAM(
random-access
memory,
随机访问存储器
)中,通过它的“
堆栈指针
”可以从处理器那里获得。堆栈指针若向
下移动,则分配新的内存空间,若向上移动,则
释放内存
。创建程序时,
Java编译器
必须知道存储在堆栈内所有数据的大小和生命周期,
因为它必须生成相应的代码,以便上下移动堆栈指针。由于约束性质,所以一般存储的是Java的
对象引用
和变量。
优点:快速分配的存储,仅次于寄存器。
缺点:*了程序的灵活性。
3.堆(heap)。通用性
内存池
,用于存放所有的Java对象。堆的好处是:编辑器
不需要知道
堆里要分配多少
存储区域
,也
不必知道
存储的数
据在堆里的存活多长时间。在Java中,创建一个对象,只需要用new,当执行这行代码,会自动在堆里进行存储分配。
优点:在堆里分配存储有很大的灵活性。
缺点是:用堆进行存储分配比用堆栈进行存储需要更多的时间。
4.静态存储(static
storage)。是指在固定位置(也在RAM里)。静态存储里存放程序运行时
一直存在
的数据。通常是Java的
静态变量
,但
Java对象本身从来不会放在静态存储空间里。
5.常量存储(constant
storage)。通常是存放在ROM(read-only
memory,
只读存储器
)中,因为常量本身他们永远不会被改变。