关于JAVA数据储存:

在JAVA中,有六个不同的地方可以存储数据:

1. 寄存器(register)

这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。

2. 堆栈(stack)

位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。这是一种快速有效的分配存储方法,仅次于寄存器。创建程序时候,JAVA编译器必须知道存储在堆栈内所有数据的确切大小和生命周期,因为它必须生成相应的代码,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些JAVA数据存储在堆栈中——特别是对象引用,但是JAVA对象不存储其中。

3. 堆(heap)

一种通用性的内存池(也存在于RAM中),用于存放所以的JAVA对象。堆不同于堆栈的好处是:编译器不需要知道要从堆里分配多少存储区域,也不必知道存储的数据在堆里存活多长时间。因此,在堆里分配存储有很大的灵活性。当你需要创建一个对象的时候,只需要new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然,为这种灵活性必须要付出相应的代码。用堆进行存储分配比用堆栈进行存储存储需要更多的时间。

4. 静态存储(static storage)

这里的“静态”是指“在固定的位置”。静态存储里存放程序运行时一直存在的数据。你可用关键字static来标识一个对象的特定元素是静态的,但JAVA对象本身从来不会存放在静态存储空间里。

5. 常量存储(constant storage)

常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。有时,在嵌入式系统中,常量本身会和其他部分分割离开,所以在这种情况下,可以选择将其放在ROM中

6. 非RAM存储

如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。

就速度来说,有如下关系:

寄存器 < 堆栈 < 堆 < 其他

JAVA储存_关于JAVA数据储存相关推荐

  1. java 计时器_【java内存】内存结构

    开局3张图,结论全靠吹,全文所有内容都围绕这3个图展开. 1.java语言编译解释过程 我们编写的java语言,经过java源码编译器后会编译成jvm字节码,也就是.class文件. 然后再通过类加载 ...

  2. 易语言 java支持_开源Java客户端可以连接易语言服务器

    我们的服务端处理客户端的连接请求是同步进行的, 每次接收到来自客户端的连接请求后, 都要先跟当前的客户端通信完之后才能再处理下一个连接请求. 这在并发比较多的情况下会严重影响程序的性能, 为此,我们可 ...

  3. 21点 小游戏 java代码_基于Java的21点扑克游戏的实现

    在上次写的比较牌点的扑克游戏上Java扑克游戏(多人多牌数比较游戏)的实现中,添加21点游戏规则,实现21点牌类游戏.具体实现步骤如下:[需要源代码的留QQ,大家一起探讨探讨哈,谢谢啦!] 抽象出规则 ...

  4. java 抓图_用JAVA实现屏幕抓图的简单实例

    /* 主要使用的是java.util.Robot类来捕获屏幕, * 可以实现对屏幕一个矩形区域的捕获,通过这个类, * 我们也可以实现一个远程桌面控制的程序 */ package com.qiu.ut ...

  5. 斗地主 java思路_使用Java实现简单的斗地主案例

    使用Java实现简单的斗地主案例 案例说明:使用Java实现简单的斗地主洗牌发牌的操作: 具体规则: 共有54张牌,顺序打乱: 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后留三张为底牌(地主牌) ...

  6. python能解密java的_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  7. java掌握_掌握Java 11的Constantdynamic

    java掌握 为了使JVM对动态语言更具吸引力,该平台的第七版已将invokedynamic引入了其指令集. Java开发人员通常不会注意到此功能,因为该功能已隐藏在Java字节码中. 简而言之,通过 ...

  8. 虚拟机 java 开发_深入浅出 Java 虚拟机 · 通往高级 Java 开发的必经之路

    第一章 JVM 内存模型 Java 虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是:程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区. 下面对这五个区域 ...

  9. java 观察者模式_图解Java设计模式之观察者模式

    图解Java设计模式之观察者模式 天气预报项目需求 天气预报设计方案 1 - 普通方案 观察者模式(Observer)原理 观察者模式解决天气预报需求 观察者模式在JDK应用的源码分析 天气预报项目需 ...

最新文章

  1. SQL SERVER SQLOS的任务调度--微软亚太区数据库技术支持组 官方博客
  2. linux shell ls 获取绝对路径
  3. windows10 IOT +Azure会议概要总结
  4. 二叉树的先序/中序/后序(递归、非递归)+层序遍历
  5. HDU 3555 - Bomb
  6. JPA /休眠刷新策略初学者指南
  7. 商家中心设计 多sku商品发布_商家后台怎么设计商品信息?
  8. Advanced Logging For IIS
  9. mysql 数据库军规_用尽洪荒之力整理的Mysql数据库32条军规(转)
  10. 前自增和后自增的比较
  11. sql server2016还原数据库
  12. python是一门_人人用Python 篇一:Python是一门人人可掌握的手艺
  13. xul转换html,ExportHTMLFolderMod.uc.xul
  14. L1-1 寻找250(10 分)
  15. element-ui 响应式布局
  16. 如何比较两个文本的相似度
  17. DNS云监控出现问题如何解决
  18. 用Python获取Amazon亚马逊的商品信息
  19. 两点三次埃尔米特插值法
  20. iPad 使用技巧:虚拟键盘与实体键盘

热门文章

  1. 华为云跨云迁移工具案例实践:阿里云迁移到华为云
  2. java 系统容量预估
  3. 2018上海科技大学991数据结构与算法
  4. Bos物流项目之在线下单流程图
  5. java惰性计算原理_利用 Lambda 表达式实现 Java 中的惰性求值
  6. opcode加密php代码,总结Opcode缓存和PHP代码的加密
  7. Eclipse相关技术总结
  8. CubeMXIDE 汉化
  9. 72名图灵奖获得者的成就
  10. AI基础原理篇(一)