Java中数据是如何存储

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一:JAVA中数据的存储方式

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

②:栈:位于RAM(内存)中 ,但通过指针可以从处理器哪里获得直接支持,栈的指针上移,释放内存。下移重新分配内存。这是一个快速有效的分配方法,仅次于寄存器。创建程序时,Java系统必须知道存储在栈内所有项的确切生命周期。以便于上下移动栈的指针。这一约束限制了程序的灵活性,所以虽然某些Java数据存储于栈中——特别是对象的引用,但是Java对象并不存在于栈中。

③:堆:一种通用的内存池(也位于RAM区),用于存放所有的Java对象。堆不同于栈的好处是:编译器不需要知道存储的数据在堆里面活多长的时间。因此,在堆里分配存储有很大的灵活性,当需要一个对象时,只需要new一个对象,当执行这个代码时,会自动在堆里面进行存储分配。当然,任何事情都有两面性,用堆进行存储分配和清理可能比用栈存储分配需要更多的时间。

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

⑤非RAM存储:如果数据完全存活在程序之外,那么他可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本的例子是流对象和持久化对象。在流对象中,对象转化成字节流,通常被发送到另外一台机器上。在持久化对象中,对方被放在磁盘上,因此,即使程序终止,他们仍可以保持自己的状态。这种存储方式在于:把对象转化成可以存放早其他媒介上的事物,在需要时,可恢复成常规的,基于RAM对象。Java提供了对轻量级持久化的支持。

 

1.存储数据类型:栈内存中存放局部变量(基本数据类型和对象引用),而堆内存用于存放对象(实体)。

2.存储速度:就存储速度而言,栈内存的存储分配与清理速度更快于堆,并且栈内存的存储速度仅次于直接位于处理器当中的寄存器。

3.灵活性:就灵活性而言,由于栈内存与堆内存存储机制的不同,堆内存灵活性更优于栈内存。

这样两种存储方式的不同之处,也是由于它们自身的存储机制所造成的。所以为了理解它们,首先我们应该弄清楚它们分别的存储原理和机制,在Java中:

— 栈内存被要求存放在其中的数据的大小、生命周期必须是已经确定的;

— 堆内存可以被虚拟机动态的分配内存大小,无需事先告诉编译器的数据的大小、生命周期等相关信息。

转载于:https://my.oschina.net/mujourney/blog/681264

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码重构五

2014年3月3日 10:13:25 今天使用frameset时,发现。在框架的src页面里,如果引用 base_url() 载入的页面一片空白。转载于:https://www.cnblogs.com/jsRunner/p/3577832.html

Android之Lollipop DevicePolicyManager学习(下)

转载:http://blog.csdn.net/guiyu_1985/article/details/42968781 3. 如何在主账户与被管理者账户之间做数据通信。 a) 什么是userID 刚才提到,Lollipop用来区分主账户与被管理账户的其实是一个int型数值userID。 从UserHandler.class可…

oracle 时间转化函数及常见函数 .

摘自: http://blog.csdn.net/feifei666888/article/details/4835685 两种时间转换格式 plsql> select to_date(2005-01-01 13:14:20,yyyy-MM-dd HH24:mi:ss) from dual; select date‘2005-01-01’ from dual; 按规定格式 获得系统时间 如下: select to_char(sys…

详解:从Greenplum、Hadoop到现在的阿里大数据技术

对于企业来说,但是到底云计算是什么呢?相信很多企业都有这样的困惑,让我们一起回到这个原始的起点探讨究竟什么是云计算?云计算对于企业而言到底意味什么?云计算的三条发展路径及三种落地形态 当回到最初的起点再审视云…

技术分享 | 【构建服务端SDK】之连接中心统一调用SDK

源宝导读:微服务架构与传统的单体式方案的最大不同是微服务将应用的核心功能拆分成多项服务。每项服务可以单独构建和部署。服务之间需要互相通信。假设服务间每次通信都需要在调用方编码操作,那么必定会增加很大的工作量,并且造成代码冗余并…

android动态化ui框架,动态化高性能的 UI 框架 Virtualview-Android

软件介绍Virtualview-Android 是一个虚拟化组件,是 Tangram 模型在 2.0 版本补充的 UI 开源库。它开创了一种虚拟化开发基础控件的技术,使用方只要按照指定协议实现一个基础控件的尺寸计算、绘制逻辑、布局逻辑,即能实现在宿主容器的 canvas …

Java的位运算符详解实例——与()、非(~)、或(|)、异或(^)

位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运…

关于Webapp的注意事项

meta标签<meta name"viewport" content"widthdevice-width, initial-scale1.0, user-scalableno, minimum-scale1.0, maximum-scale1.0">宽度&#xff1d;设备宽度&#xff0c;初始比例&#xff1d;1&#xff0c;阻止放大&#xff0c;最小比例&#…

Tcp连接的七次握手浅析

连接的三次握手 客户端向服务器发送SYN请求 服务器发送ACK回应请求&#xff0c;并同时发送一个SYN的请求给客户端 客户端回应ACK应答 关闭的四次握手 对于关闭流程&#xff0c;一共有三种情况&#xff1a;客户端主动关闭&#xff0c;服务器端主动关闭&#xff0c;客户端和服务器…

与副交流后总结

昨天和几个项目刚刚上线的3位管理者向副总汇报了一下项目总结&#xff0c;或者是交流&#xff08;老板直接说是轻松一点的交流&#xff09; 我的总结主要部分: 亮点&#xff1a; •从可行性研究到最后的上线&#xff0c;思路还算清晰•共好的项目组&#xff0c;同事的有力支持•…

探讨float类型的数值,为什么两个float不能直接相等

转载&#xff1a;http://blog.csdn.net/turkeyzhou/article/details/2755970 在程序编写的时候&#xff0c;我们会忽略一些细节上的问题&#xff0c;尤其是写java这种高级语言&#xff0c;久而久之&#xff0c;我们会对底层缺乏认识&#xff0c;这也是为什么前段时间会有人说j…

android ifw 启动广告,使用 IFW 完全控制 Android 应用行为 | 实用技巧

我们常说 Android 系统最大的优点是开放性与包容性&#xff0c;但这也造成了应用行为不容易掌控的缺点。特别是国内应用与系统&#xff0c;失去了谷歌 Play 商店官方的应用审核政策后普通用户根本无法确定应用获取的权限用来干什么&#xff0c;又在后台执行了哪些行为。谷歌最近…

VS2022安装教程和使用说明来了

我看很多小伙伴已经开始迫不及待的安装VS2022了&#xff0c;虽然我也安装了VS2022&#xff0c;但是我依旧使用VS2019。因为我觉得适合我的才是最好的&#xff0c;并非是最新的&#xff0c;所以大家在使用的时候&#xff0c;根据实际需求选择开发工具&#xff0c;不要一味追求最…

华为交换机RRPP配置实验

在工作中遇到了H3C和HW的RRPP配置&#xff0c;以下就以华为模拟器再作一次实验。大家共同来论讨论遇到的问题。 【理论基础】RRPP具体的理论见配置手册下面只点几个容易出错的地方1、作为RRPP环的接口要关闭STP2、两个重要的命令&#xff1a;control-vlan vlan-id命令&#xff…

Android之AIDL服务

AIDL服务 服务&#xff08;Service&#xff09;是android系统中非常重要的组件。Service可以脱离应用程序运行。也就是说&#xff0c;应用程序只起到一个启动Service的作用。一但Service被启动&#xff0c;就算应用程序关闭&#xff0c;Service仍然会在后台运行。 andro…

男人的那些统一话术......

1 当面试官来租你的房子▼2 好家伙&#xff08;via.dy油画艺术&#xff09;▼3 学到了&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 一杯奶茶能加多少料▼5 原来我们如此优秀&#xff01;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼6 幼儿园里卧…

后端开发者开发前端必会的工具(一):样式调试篇

又来为大家分享干货了&#xff0c;今天主要是分享一点关于后端工程师开发前端比较苦恼的一个问题《如何去调试前端&#xff1f;》&#xff0c;我相信这是所有后端开发者比较困惑的&#xff0c;如果有这个困惑的&#xff0c;记得关注“程序员晓晓”公众号&#xff0c;并给我留言…