java程序运行时对象是怎么进行放置安排? 内存是如何分配的呢?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/User_meng/article/details/78447303

java程序运行时对象是怎么进行放置安排?

内存是如何分配的呢?


1. 寄存器
这个是最快的存储区,位于处理器的内部。
但是寄存器的数量是极其有限的,所以寄存器根据需求进行分配,你是不能直接控制。

2. 栈
位于通用的RAM(随机访问存储器)中,但是通过堆栈指针可以从处理器哪里获取直接的支持。
若堆栈指针向下移动,则分配新的内存;若向上移动,则释放哪些内存。
这是快速有效的分配存储方法,仅次于寄存器。

  创建程序时,java系统必须要知道存储在堆栈中所有项的确切生命周期,以便上下移动堆栈指针。
  但是这样的话,约束限制了程序的灵活性,所以某些java数据存储在堆栈中(对象的引用),但是java
  对象并不在其中。

3. 堆
一种通用的内存池(也存在于RAM中),用于存放所有的java对象。
堆不同栈的好处是:编译器不需要知道存储的数据在堆中的生命周期。代码中只需要执行new就可以
在堆中自动自动进行存储分配。

4. 常量存储
常量值通常直接存放在程序代码内部,这样做事安全的,因为它们不会被改变。
在嵌入式系统中常量要和其他的部分隔离开,则可以选择将其放在(ROM只读存储器中)

5. 常量存储
如果数据完全存活在程序之外,那么它可以不接受程序的任何控制,在程序没有运行时也是可以存在的

 例如:流对象和持久化对象。在流对象中,对象转化为字节流,通常被发送给另一台机器。在持久化对象中,对
 象存放在磁盘上,因此即使程序终止,它们任可以保存自己的状态。这种处理方式的技巧在于,把对象转换成可
 以存放在其他媒介上的事务。在需要的时候,可恢复成常规,基于RAM对象,java提供了轻量级持久化支持。而
 JDBC和Hibernate这样的机制提供了更加复杂的对在于数据库中存储和读取信息的支持。

以上为本菜鸟学习java编程思想中笔记,大神们如果还有好的理解方式,可以留言。以供学习。拜谢—–

猜你喜欢

转载自blog.csdn.net/User_meng/article/details/78447303