美文网首页
Java程序运行时,数据都保存到什么地方?

Java程序运行时,数据都保存到什么地方?

作者: 在挖坑的猿 | 来源:发表于2017-10-19 17:04 被阅读0次

引用和对象

  • 例子说明 String a = "a";
    • a是引用,"a" 是对象

程序运行时,有5个地方可以存储数据

  • 寄存器
    • 位于不同于其他存储区的地方-处理器内部
    • 最快的存储区
    • 寄存器数量极其有限,按需分配,不能直接控制,不能再程序中感觉到寄存器存在的任何迹象(另一方面,c和c++允许向编译器建议寄存器的分配方式)
  • 堆栈
    • 位于通用RAM(随机访问寄存器),存储单元的内容可按需随意取出和存入,存储速度与存储单元的位置无关的存储器(断电丢失)
    • 通过堆栈指针可以从处理器那里获取直接支持
    • 堆栈指针向下移动则分配新的内存,若向上移动,则释放内容。这是一种快速有效的分配存储方法,仅次于寄存器。
    • 创建程序时,JAVA系统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性。
    • 对象引用存储在堆栈中
    • 位于RAM区中的通用的内存池,用于存储所有java对象。
    • 堆不同于堆栈的地方是:堆不需要知道存储的数据在堆里存活多长时间。因些,在堆里分配存储空间有很大的灵活性。当需要一个对象时,只需要用NEW写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。缺点是用堆进行存储分配和清理要比用堆栈更耗时。
  • 常量存储
    • 存储在ROM(只读寄存器中)
    • 常量值一般直接放于程序内部,这样做是安全的,因为它们永远不可能改变。如果是嵌入式,可能常量本身会和程序分开,放在ROM中
    • 这种存储区的一个例子是字符串池,所有字面常量字符串和具有字符串值的常量表达式都自动是内存限定的,并置于特殊的静态存储区中
  • 非RAM存储
    • 如果数据完全存活于程序之外,那么它可以不受任何程序的影响。比如流对象和持久化对象。
    • 把对象转化成可以存放在其他媒介上的事物,在需要时,可以恢复成常规的、基于RAM的对象。

相关文章

  • Java程序运行时,数据都保存到什么地方?

    引用和对象 例子说明 String a = "a";a是引用,"a" 是对象 程序运行时,有5个地方可以存储数据 ...

  • java 程序运行时,内存分配情况

    程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。 有六个地方都可以保存数据:1. ...

  • 深入理解 JVM 内存分配模型

    程序运行时,内存到底是如何进行分配的? 虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域...

  • Java中数据存放的位置

    Java程序运行的时候,数据一般保存到什么地方?下面来详细讲一下。 (1)寄存器。这是最快的保存区域,因为它位于和...

  • 【JAVA】深入理解虚拟机之虚拟机类加载机制

    Java程序运行时,数据会分区存放,JavaStack(Java栈)、 heap(堆)、method(方法区)。 ...

  • Java程序员必须了解的java内存模型

    Java程序运行时,数据会分区存放,JavaStack(Java栈)、 heap(堆)、method(方法区)。 ...

  • 读写文件8章节

    当程序运行时,变量是保存数据的好方法,但如果希望程序结束后数据仍然保持,就需要将数据保存到文件中。你可以认为文件的...

  • Python操作Mysql,这一篇就够了

    程序在运行时,数据都是在内存中的。当程序终止时,通常需要将数据保存在磁盘上。前面我们有学过将数据写入文件就是保存到...

  • Java方法执行过程

    运行时数据区 Java 运行时数据区共分为以下几个部分:程序计数器、Java 虚拟机栈、本地方法栈、Java堆和方...

  • C#中的堆和栈理解

    引言:程序运行时,它的数据必须存在内存中,一个数据需要多大内存、存储在什么地方以及如何存储都依赖于该数据的数据类型...

网友评论

      本文标题:Java程序运行时,数据都保存到什么地方?

      本文链接:https://www.haomeiwen.com/subject/adqpuxtx.html