对象的五种存储位置

程序运行时有5种不同的地方可以存储数据

  1.寄存器。

    这是最快的存储区,它位于处理器内部。但是它的数量极其有限,所以寄存器要按需求分配。不能人为直接控制。

  2.栈内存。

    位于随机访问存储器(RAM)中。通过堆栈指针可以从处理器那里直接获得。堆栈向下移动,则分配新的内存,向上

         移动则释放那些内存。这是一种有效的分配存储方法,仅次于寄存器。但是创建程序时Java系统必须知道存储堆栈中所有项

         的生命周期,已便上下移动指针。这样就约束了程序的灵活性。所以Java中对象的引用存在其中,对象则不存储其中。

  3.堆内存。

    也位于RAM上,用于存放所有Java对象。堆与栈不同之处在于编译器不需要知道存储在堆里的数据生命周期。因此

    堆里分配存储有很大的灵活性。缺点是用堆进行存储分配和清理比栈存储和清理要费更多的时间。

  4.常量存储。

    常量值通常直接存放在Java程序代码内部,这样做是安全的,因为它们永远不会被改变。有时在嵌入式系统中,常量

    本身会和其他部分分离,所以在这种情况下,可以存放在ROM(只读存储器)中。

  5.非RAM存储。

    如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个例子是流对象

    和持久化对象。在流对象中,对象转换成字节流。持久化对象中对象存放磁盘上。因此即使程序终止它们可以保持自己的

    状态。

  Java中数据存储分为这5种。实际运用中谈起最多的就是堆和栈。综上所述来理解堆栈的相同之处和不同之处。

  

猜你喜欢

转载自www.cnblogs.com/blue327/p/11082991.html
今日推荐