美文网首页
个人印象笔记摘要 Java存储的五个位置

个人印象笔记摘要 Java存储的五个位置

作者: 为什么不能用日文小清新 | 来源:发表于2017-06-23 19:58 被阅读0次

    2.21 存储到什么地方

    在程序运行时 内存是怎么分配的 对象是怎么安置排放的 ?总共有五个地方可以存储数据

    1.寄存器 这是最快的存储区 他在处理器内部,但是寄存器内部空间极其有限 所以寄存器根据需求进行分配 不能直接控制 也不能在程序中感觉到寄存器存在的任何迹象(另一方面 C和C++允许您向编辑器建议寄存器的分配方式)

    2.堆栈。 位于通用RAM中(随机访问存储器) 但通过堆栈指针可以从处理器获得快速支持。堆栈指针若向下移动,则分配新的内存,若想上移动,则释放那些内存。这是一种快速有效的分配存储方法 仅次于寄存器 。 创建程序时 Java系统必须知道存储在堆栈内所有项的确切生命周期 ,以便上下移动堆栈指针 这一约束限制了程序的灵活性,所以虽然某些Java数据存储于堆栈中----特别是对象引用 但是Java对象并不存储与期中

    3.栈 一种通用的内存池 (也位于RAM中) 用于释放所有的Java对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间 因此 在堆里分配存储具有很大的灵活性 当需要一个对象时 只需要用new写一行简单的代码 当执行这行代码是 会自动在堆里进新存储分配

    当然 为这种灵活性必须付出相应的代价 用堆进行存储分配和清理可能比用堆栈进行存储分配的需要更多的时间 (确实可以在Java中像C++一样创建对象)

    4.常量存储 常量值通常直接存放在程序代码内部 这样做是安全的 因为这样永远不会被改变 有时 在嵌入式系统中,常量本身会和其他部分分隔开 所以在这种情况下 可以选择将其存储与ROM(只读存储器)中

    5.非RAM存储 如果数据完全存活于程序只外 那么它可以不受程序的任何控制 在程序没有运行时也存在 。其中两个基本的例子是流对象和持久层对象 1.在流对象中 对象转化成字节流,通常被发送给另一台机器。在”持久层对象中“,对象被存放在磁盘上 因此 即使程序终止 它们热可以保持自己的状态 这种存储方式的技巧在于 把对象转化成 可以存放在其他媒介上的事务,在需要时 可恢复成常规的,基于RAM的对象 。 Java 提供了对轻量级持久化的支持,而诸如JDBC和Hibernate这样的机制提供了更加复杂的对在数据库中存储和读取对象信息的支持

    相关文章

      网友评论

          本文标题:个人印象笔记摘要 Java存储的五个位置

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