博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javaSE之存储区的分类
阅读量:6679 次
发布时间:2019-06-25

本文共 1087 字,大约阅读时间需要 3 分钟。

java 存储区

寄存器(register):

  寄存器与其它的存储区不一样,它是位于cpu中,是存取速度最快的存储区,但由于寄存器的数量有限,它的分配由cpu按需分配,程序员没有必要去分配,也不能让程序员去分配。

栈(stack)

  位于RAM中,并通过cpu直接支持的栈指针(stack pointer)来进行操作,sp通过向下移动(sp+1)来分配新的存储空间,向上移动(sp-1)来释放存储空间。它是仅次于寄存器的一种快速分配存储空间的方式。创建程序期间,Java编译器必须知道在栈上的所有数据的准确大小和生命周期,这样它才能产生栈指针来上下移动分配释放存储空间。但这样也限制了代码的灵活性。如某些java存储区在栈上时--对象的引用,而java的对象本身不是存储在栈上的(java对象存储在堆中)。

堆(heap)

  在RAM中,存储java对象的内存池,与栈相比较而言,java编译器不必知道堆具体分配了多大的存储空间和它的生命周期是多长。因此在堆上分配存储空间更加灵活方便,无论你何时想分配存储空间,只需使用new 关键字,当这段代码被执行时,就在堆上分配了存储空间。这样有了灵活性的时候,也增加了时间的开销。

静态存储区(static storage):

  静态(static) 表示一个固定的存储区域,也是在RAM中,静态存储区包括整个运行期间都有效的数据。可以用static来指定特殊的对象为静态的。但java对象本身不是静态的。

常量存储区(constant storage):

常量通常被直接放置在程序代码当中.这是安全的,因为它们永远不能被改变.在某些时候多个常量能够自己分隔开,这样在嵌入式系统中可以被任意地放置在只读存储器(ROM)中。

 非RAM存储区(non-RAM storage):

  如果数据完全存在于程序之外,在程序未被运行时数据也能存在,而不受程序的控制.对于此类情况,有两个主要的例子来说明:一,对象流(streamed objects),这种对象通常以字节流的形式被送到其他的机器去.二,持久化对象(persistent objects),这种对象存放在磁盘上,即便是程序中止以后它们仍然保持原有状态.这些存储器都是将对象以某种形式保存在其他的介质中,然后在需要的时候再把它恢复为常规的基于RAM的对象.Java提供了对轻量级持久性的支持.在未来的Java版本中,Java将提供更加完备的持久性的支持.

转载于:https://www.cnblogs.com/Dandelion0301/p/4499126.html

你可能感兴趣的文章
WPF合并资源字典
查看>>
SPOJ 3273 - Order statistic set , Treap
查看>>
samba客户端配置及实例应用详解
查看>>
设计模式 -- 单例模式(Java&&PHP)
查看>>
安卓高手之路之 WindowManager
查看>>
监视键盘来获得密码
查看>>
Android 安装和启动另外一个应用
查看>>
Spark学习体系
查看>>
SD卡路径问题以及如何获取SDCard 内存
查看>>
程序员面试笔试宝典学习记录(七)(海量数据相关知识)
查看>>
公租自行车-北京经济技术开发区
查看>>
Android面试,IntentService的原理及使用
查看>>
IIS下浏览指定文件(如:web.config)
查看>>
[深入浅出WP8.1(Runtime)]应用实例——移动截图
查看>>
hdu 4770(枚举 + dfs爆搜)
查看>>
iPhone 6 首发无大陆,DevStore要去香港吗?
查看>>
理解class.forName()
查看>>
web系统架构的演进变化很形象
查看>>
Linux curses库使用
查看>>
第42周三
查看>>