java基础-内存分配
来源:互联网 发布:淘宝抢货神器 编辑:程序博客网 时间:2024/06/05 16:46
程序运行时,有六个地方可以保存数据:
(1)寄存器--最快的保存区域,在处理器内部,但寄存器数量有限,所有寄存器是根据需要由编译器分配。
(2)堆栈--驻留与常规RAM(随机访问存储器)中,堆栈指针下移,创建新内存;堆栈指针上移,释放内存。创建程序时,java编译器必须准确知道堆栈保存的所有数据的长度和存储时间,这是由于它必须生成相应的代码,以便上下移动指针。但这影响了程序灵活,所以对象并不放在这,但是这里放着java的一些数据和操作符,进栈出栈,尤为重要一点对象的句柄(特殊指针,或者说引用地址)保存在这。
存储的数据大致分为两类:
<1>java的基本数据类型共有8种,即int,short,long,byte,float,double,boolean,char(string不是基本类型)。基本类型的定义是通过诸如
int a = 2; long b = 233L;的形式来定义的,称为自动变量。处于追求速度的原因,它们存储在堆栈中。
<2>java中的引用对象
堆栈有一个很重要的特殊性,就是存在于堆栈中的数据可以共享
(3)堆---一种常规用途的内存池,其中保持了java对象,在内存堆或堆中编译器不需要知道堆里分配了多少内存空间和存储数据要在堆中停留的时间。因此,用堆保存数据会得到更大的灵活性。在创建一个对象时,只需用new命令编制相关代码即可。执行代码时,会在堆中自动进行数据保存,当然,为达到这种灵活性,在堆里分配存储空间会花掉更长的时间。
(4)静态存储---“静态”是指“位于固定位置”程序运行期间,静态存储的数据将随时等候调用,可以用关键字static关键字指出一个对象的特定元素是静态的,但java对象本身永远都不会置入静态存储空间
(5)常数存储---常数值通常直接置于程序代码内部。这样做是安全的,因为它们永远都不会改变。有的常数需要严格的保护,所有可考虑将它们置入可读存储器。
(6)非RAM存储---若数据完全独立于一个程序外,则程序不运行时仍可存在,并在程序的控制范围之外。
- java基础-内存分配
- java内存分配基础
- java基础:内存分配机制
- Java 内存分配全面浅析 | Java基础
- Java基础_内存分配全面解析
- Java基础-数组的内存分配
- Java 基础【04】数组内存分配
- Java内存管理基础篇- Java内存分配
- Java内存管理基础篇 - Java内存分配
- Java内存管理基础篇- Java内存分配
- 黑马程序员java基础篇----关于java内存分配
- 《Java 编程思想》002 Java内存分配和对象基础
- Java基础-对象的内存分配与初始化
- Java基础-方法区以及static的内存分配图
- 【java基础 8】垃圾收集算法及内存分配策略
- Java基础-方法区以及static的内存分配图
- Java基础-方法区以及static的内存分配图
- Java 基础【04】数组内存分配 引用传递 值传递
- Activity生命周期的通俗理解
- iOS关键字
- 视图控制器中navigationItem中backBarButtonItem设置问题
- Android React-Native系列之<二>零基础学习React-Native控件之View
- 安卓欢迎界面的编写
- java基础-内存分配
- 密码学应用(DES,AES, MD5, SHA1, RSA, Salt, Pkcs8)
- 求素数,给你一个n,输出n以内的素数
- 网页元素的滑动事件(四)
- 图的邻接矩阵表示
- 协方差
- UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
- C++虚函数表详细解释及实例分析
- 通过 PCIE Inbound