java基础——java内存分配与管理,
java基础——java内存分配与管理,
一、java有哪几种内存?
java虚拟机在启动时,一共在内存中划分了5片区域来进行对数据的存储,分别是:栈内存,堆内存,方法区,本地方法区,寄存器。
二、栈内存和堆内存
以前在学数据结构时,总是把这两种结构习惯的称为“堆栈”。成天堆栈堆栈的喊,到底干啥用,也没太在意。现在就来重新温习一下。
栈,专业术语解释就是限定仅在表尾进行插入或删除操作的线形表。
堆,计算机中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象......
这些专业术语的解释是在让人看着不爽,非专业人员根本就看不懂嘛。
(1)简单点说,栈就是一个桶,你往里面加水取水都是在水的最高处进行操作。因为只有上边这一个口。-------------------------先进后出
堆,就是水管。水从一边进,从另一边出,有两个口。------------------------先进先出
(2)那么java中这两个方法区是干嘛用的呢?
栈:存放基本数据类型和对象的引用。
堆:存放对象,也就是new产生的数据。
举个例子:int a=3;此时,java虚拟机就会在栈内存中创建一个变量为a的引用(也就是这个变量的外号)。
Integer a=new Integer(5);这样写的话,就不一样了,这时java虚拟机在栈内存中创建一个变量为a的引用,在堆内存中创建一个Integer类型的对象,这个对象在内存中的表现形式是一个地址值(因为内存中存放的都是地址值)。对a这个引用进行赋值,就会将创建的Integer对象的首地址赋值给a。
三、方法区和本地方法区
第一印象是,这是干嘛用的?----------------------------存储已被虚拟机加载的类信息、常量、静态变量,即时编译后的代码等数据。
本地方法区:顾名思义,在当地存储的一些方法,可以拿来直接使用,而不需要经过太多流程。(注:这块信息资料较少,待我进一步学习再做总结。)
四、寄存器-----------(这一块)
所有进程都使用寄存器,Java虚拟机只使用4种寄存器管理系统堆栈:(当使用的寄存器数多于处理器端口数时,处理器效率会降低)
程序记数寄存器:跟踪程序执行的准确位置
堆栈指针寄存器:指示操作栈项
框架寄存器:指向当前执行的环境
变量寄存器:指向当前执行环境中第一个本地变量
注:此一块对于基础学习人员并不甚重要,重要的是堆栈内存一块。
相关文章
- 暂无相关文章
用户点评