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

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值