欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java基础——java内存分配与管理,

来源: javaer 分享于  点击 15276 次 点评:133

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种寄存器管理系统堆栈:(当使用的寄存器数多于处理器端口数时,处理器效率会降低)

程序记数寄存器:跟踪程序执行的准确位置
    堆栈指针寄存器:指示操作栈项
    框架寄存器:指向当前执行的环境
    变量寄存器:指向当前执行环境中第一个本地变量

注:此一块对于基础学习人员并不甚重要,重要的是堆栈内存一块。


相关文章

    暂无相关文章
相关栏目:

用户点评